CVS conversion: merged branches not in shared repo

Greg Ward greg-bzr at
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?

Thanks --


More information about the bazaar mailing list