CVS conversion: merged branches not in shared repo
greg-bzr at gerg.ca
Wed Apr 1 13:49:49 BST 2009
Hi all --
I'm converting a CVS repository in a rather roundabout way:
* use cvs2git to generate a fast-import dump
* run a little script I wrote to filter that dump in various ways
* feed the filtered dump to "bzr fastimport"
Last week, before I added the middle step, this worked reasonably
well. The main problem was that I got a Bazaar repository with dozens
of branches, all of which were still "open" (i.e. they each have a
head revision that has not been merged anywhere). That is, the DAG
reflects CVS' lack of knowledge about merges.
The reason for filtering the dump is so that I could get a more
accurate DAG. Since we're fairly systematic about recording merges in
CVS, I can automatically detect a good proportion of them and turn
them into merge commits in the fast-import dump. Both git and bzr's
fastimport commands handle these nicely and create merge revisions in
the resulting DAG. Very nice.
But here's the catch: as it happens, one of our recent release
branches (3-6-1) is fully merged in the snapshot of the CVS repo that
I'm working on. That is, someone fixed a bug there, merged it to the
next release branch (3-7-1), and there have not been any changes on
3-6-1 since then. That would be fine, except my Bazaar shared repo
does not have a branch for 3-6-1. Most other release branches are
there, because they all have unmerged head revisions.
I assume the history of branch 3-6-1 is indeed present in my shared
repo. But how do I clone that branch to fix another bug on it, if
there is no "3-6-1" directory in the shared repo?
More information about the bazaar