Re: Some cvs2bzr thoughts
Max Bowsher <[email protected]> Fri, 09 Oct 2009 10:27:52 +0100
| Newsgroups | gmane.comp.version-control.subversion.cvs2svn.devel |
|---|---|
| Message-ID | <[email protected]> |
Michael Haggerty wrote: > [CC to Ian Clatworthy, because I don't think he is subscribed to this > mailing list.] > > Max Bowsher wrote: >> 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? > > Sounds good. Committed. >> 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? > > If you create a git branch with a slash in it, git simply creates the > branch one level deeper in the directory tree. (This holds for the > command-line client and I assume it also holds for git-fast-import.) So > there is no need to ban "/" in git branch names. But it seems perfectly > reasonable to provide different name-mashing for the different backends. Hmm. Sounds like I should take this one to the bzr-fastimport folks. > Arguably *all* of the ancestry information that cvs2x generates for > branching and tagging files is suspect when migrating to a DVCS, except > when *all* files on the parent branch are branched or tagged at the same > time. This is because in a DVCS, "revision A is an ancestor of revision > B" implies that all changes that were made leading up to A are also > contained in B. But adding a single file to a branch (which currently > causes cvs2x to generate a merge) implies nothing of the sort. I wrote > a bit here about the difference: > > http://softwareswirl.blogspot.com/2009/08/git-mercurial-and-bazaarsimplicity.html > > When should ancestry information be generated by default? A few > possible policies would be: > > (1) generate *no* ancestry connection from parent branch to new > branch/tag (simple to implement!) Hah! > (2) generate only "obvious" ancestry information, when each and every > file on the parent branch is added to a new branch/tag at the same time > (strictly better than (1) but a little bit of work, and may miss some > justifiable ancestry info due to issues #54 and #55) > > (3) generate ancestry information only on branch/tag creation (i.e., not > when files are added later to an existing branch). > > (4) generate ancestry information whenever a file is added to a branch > (cvs2x's current practice) I don't think (4) is sensible. I am in favour of (3), with cvs2x writing a detailed report into the log message of the branch creation commit, detailing which files were effectively cherrypicked from other revisions. Max. ------------------------------------------------------ http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=2405457 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) iEYEARECAAYFAkrPAhgACgkQfFNSmcDyxYB31wCggPFf9D9fd7fUpWU68zp8CKB9 T5gAoMgXUPS2A+qaJ6PQFP2ZFJKeYMRj =GXaa -----END PGP SIGNATURE-----