Some cvs2bzr thoughts
Max Bowsher <[email protected]> Tue, 06 Oct 2009 23:58:10 +0100
| Newsgroups | gmane.comp.version-control.subversion.cvs2svn.devel |
|---|---|
| Message-ID | <[email protected]> |
I've just been trying out cvs2bzr - some thoughts: 1) The current TAG.FIXUP branch approach inherited from git really really doesn't work for bzr. However, it can be easily fixed by generating a unique name for each tag fixup branch. I propose to derive a BzrOutputOption from GitOutputOption, and delegate the naming of fixup branches to a method that it overrides to supply "tag-fixup.%(tag_name)s". Sound OK? 2) Having done this, you end up with lots and lots of branches. Which is better than the tortuous history of every tag fixup in one branch, but poses a problem that bzr tags are local to a branch. Thus, its impossible to see these tags when browsing the trunk. I believe the proper way to solve this for a bzr conversion is to merge the tag fixup branch back into its primary source branch immediately after making the last commit on the fixup branch. I'll need to pore of the source a bit more to figure out how to make this happen, but does the concept sound sane? 3) One of the tags in my CVS repository contained / characters. bzr fast-import didn't like this very much, and created a branch named only the portion after the last /. Perhaps we should be recommending people remap symbols to not contains / characters in the default options files? Come to think of it, I'm not sure what git would do here, but it seems dodgy since git style refs/heads/foo things are /-separated paths. Perhaps we should be banning / in symbol names for fast-import output? 4) The workflows of bzr push towards a situation where every branch is either merged, or abandoned and drifts into obscurity. That is to say, because there's no concept of stashing a branch in the main repository, ignoring it, but having it obviously there for people to inspect, as there is in the git and hg worlds. Moreso than these, then, an ideal cvs2bzr conversion will inject synthetic merges in the DVCS when a branch has been merged back to trunk in CVS. Since there's no automated way to distinguish this, it'll have to rely on human hinting. Which leads me to my point: I think cvs2dvcs needs eventually to grow a feature where additional merge ancestry can be supplied for grafting into place. I've no idea how this should work just yet, I'm just throwing the idea out for pondering. Max. ------------------------------------------------------ http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=2404303 To unsubscribe from this discussion, e-mail: [[email protected]].
signature.asc
(application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkrLy4sACgkQfFNSmcDyxYDCWACfTw2sWPG5dBL5vRq73K0bOwhL LsMAoM2wKxAASapaOgCkzGi6b18WYLV1 =cQzy -----END PGP SIGNATURE-----