wiki:Development/DVCSMigrationStrategy

This is a living document. Please update the list of Todos if you find new ones or done ones.

NB: Options in discussion are git or mercurial.

Possible strategy for migrating to a DVCS

Aim is to get up the DVCS of choice quick so developers without SVN access can commit easily.

"start-quick" phase

  • Decide on which DVCS to use
  • Migrate SVN repos to a temporary repository at github resp. bitbucket.

This can be done within a few days after the decision since Hartmut already did some work here.

  • Start distributed development there.

"design" phase

Decide on

  • Future repository layout
  • Future development workflow

An example can be found at http://nvie.com/posts/a-successful-git-branching-model/. For supporting this workflow there are git extensions available at https://github.com/nvie/gitflow. Even if not using this workflow, we could learn a lot there -- esp. since there is a python-rewrite :-)

  • Future schemata for tag naming and branch naming
  • ...

"clean-up" phase

  • Find major bugs/problems/annoyances in the repository.
  • Decide on which to clean up and how, esp. if the cleanup is to be done in SVN or the DVCS of choice.
  • Write required tools and (fake-) changesets
  • Set up another temporary repository for inspection

See DVCSMigrationCleanup

"go productive" phase

  • If the cleanup is done in SVN:
    1. Set the temporary repository at github/bitbucket to read-only.
    2. Create an local, cleaned up repo in the DVCS of choice based on SVN repo.
    3. Export all accepted changesets from the temporary repository at github/bitbucket.
    4. Import these changesets into the cleaned up repo.
    5. Push the repo toe the new "official" repo at github/bitbucket.
  • If the cleanup is done in the DVCS of choice:
    1. Set the temporary repository at github/bitbucket to read-only.
    2. Create an local clone of this repo.
    3. Cleaned up the local repo.
    4. Push the repo toe the new "official" repo at github/bitbucket.

Todos

  • Decide on the migration strategy (see above)
  • Find out how to integrate an external repository of th DVCS of choice with out trac instance.
  • ...

Done

  • Implement get_repo_revision for DVCS of choice (done for mercurial and git)
Last modified 3 years ago Last modified on Dec 5, 2011 9:59:49 PM