So, we were a bit short-staffed last week due to the Understanding Risk conference, but I went ahead and set up the projects according to scheme #2 from my original proposals, with the exception that ExtJS is downloaded from Cachefly (ie, the same way you would download it from their web site). These are up on GitHub now: http://github.com/GeoNode/

The setup process should be pretty familiar for those coming from the old system:
 1. git clone [email protected]:GeoNode/geonode.git
 2. git submodule update --init
 3. python bootstrap.py
 4. source bin/activate
 5. paver build

I'll document this in a more permanent place shortly. Anyway, now that we're on git we can move to a more sandboxy model (basically, all contributors fork the project and work in their own forks, issuing pull requests when they have something suitable for 'master') or we can all push to the same github repository. I don't think we've had any issues thus far so I'd tend toward just giving everyone write access (which doesn't preclude forking or branching for particularly pervasive changes). If you'd like commit access to the repository on Github please email me with your github account name.

The other thing is the transition process. I think everyone on the team is somewhat familiar with git (except Andreas?) so I had hoped we'd be able to do this with a fairly brief transition period. Unfortunately, Andreas is in the middle of a largish refactoring on SVN trunk, so I guess it makes some sense to keep the SVN repo running until he gets that committed (and he's on vacation this week.) Therefore, I propose we keep the SVN repository up until June 25 (Friday two weeks from now) but start using the git repository for new work. I'll be merging any changes made to the SVN repo to github, but not the other way, during the interim.

Or we can just keep working in SVN until Andreas gets back; it's pretty easy to update the converted repository.

--
David Winslow
OpenGeo - http://opengeo.org/

On 05/25/2010 05:30 PM, David Winslow wrote:
On 05/12/2010 03:52 PM, Sebastian Benthall wrote:
* Switch official repository to Github for hosting the code. We have access to http://github.com/geonode and David and I agree that the evidence has panned out that github is good for project publicity. (See for example http://tinyurl.com/yhens8c ) . To effect this transition, this will require some changes to how we do JavaScript dependency management.

I've been pondering this and doing a bit of research. I see about 4 different approaches to this issue.

1 - We create a script (or maybe we use something like braid <http://wiki.github.com/evilchelu/braid/>) to mimic what we are doing, just not
    directly in the VCS.
Pros - we're still working directly off of the SVN of our dependencies, minimal change to workflow Cons - poor integration (checkout consists of "install git, install svn, install braid, git clone,
      braid update")

2 - We mirror all our SVN externals so we can use git submodules <http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html> to do the same thing. Pros - slightly better integration than braid on the client end (checkout consists of "install git,
      git clone, git submodule update --init";)
Cons - maintaining git clones of svn projects, two-tier process to push changes back

3 - We commit all SVN externals directly to the git repository, kind of like svn vendor branches <http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html>. Pros - even better integration than git submodule, when you checkout the project you get
      everything.
Cons - it takes a bit of digging in the repository to extract diffs to submit upstream patches, and
      even bringing in updates is kind of a pain.

4 - We stop checking out dependencies into the source tree and use a static download to fetch them instead. This could be a simple URL fetch like we currently do with GeoNetwork/Intermap, or it
    could include some version metadata like Maven or easy_install use.
    Pros - portable if we ever switch vcs tools again?
Cons - more rigid structure/setup process, upgrading the version means publishing a new artifact
      in the dependency repository.

I am currently thinking that choice #3 in the above list is the nicest. It allows us to version *exactly* the revision of all dependencies, unlike the current system where checking out an older revision may fail (because it's still pulling in whatever's latest from svn:externals). In addition, I think we can mitigate the hassle of extracting diffs by just keeping a branch where those dependencies are always the unmodified version from upstream. (We could even make that the main/trunk/master branch that we do deployments from.)

But I'm open to alternatives/arguments. However, let's try and be git-friendly by, say, Friday next week? I'm not aware of a hard deadline but at the rate this discussion's been going we'll never get converted.

--
David Winslow
OpenGeo - http://opengeo.org/

Reply via email to