Re: Splice/graft configuration

Max Bowsher <[email protected]> Tue, 10 Nov 2009 00:56:55 +0000
Newsgroups gmane.comp.version-control.subversion.cvs2svn.devel
Message-ID <[email protected]>
Michael Haggerty wrote:
> I was happy a while back to discover that git has support for a "grafts"
> file that allows the apparent parentage of historical revisions to be
> faked.  It is also very easy to use "git filter-branch" to rewrite the
> git repository to incorporate the parentage changes permanently (though
> of course this changes the SHA1s of all subsequent commits).  So for
> cvs2git, the simplest approach is probably to use git's facility
> post-conversion rather than trying to invent a new "graft configuration"
> for cvs2svn.
> 
> On the other hand, the grafts file cannot be written until the final
> cvs2git conversion is done, because before then the SHA1s are not
> predictable (even those from a test conversion might not be consistent
> with those from the final conversion).  And yet the repository cannot be
> published until the post-grafts rewrite is done because only then are
> the *final* SHA1s determined.
> 
> Presumably bzr and hg do not have such a facility.  I would almost
> suggest adding the "grafts" facility to the target VCS rather than
> adding it to cvs2svn.  This would allow the user to use the VCS's
> standard visualization tools to help figure out which commits should be
> treated as merges, and the feature might be useful in other contexts
> unrelated to cvs2xxx.

You'd still need to rewrite all of history to "fixate" any changes, at
which point, rerunning the cvs2xxx conversion to "fixate" your synthetic
merges isn't implausible.

> But if you want to implement this in cvs2xxx, then another possibility
> would be to denote the changeset that should be a merge by simply
> listing a single file revision that you know will be in the changeset,
> like "src/path/file.c:1.5.6.4".  cvs2svn could figure out which
> changeset this corresponds to.  Even though this would not be completely
> general, it would probably be easier for the user to deal with than
> timestamps that are not even generated until late in the cvs2svn
> conversion (and not guaranteed to be consistent from one run to the next).

I have to admit that I hacked things up using timestamps because I could
easily copy/paste them out of bzr's visual log viewer :-)

That said, I have to agree that your idea is a very neat one. With some
additional syntax to support selecting symbol creation commits, it
should work out nicely.


Max.

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=2415971

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)

iEYEARECAAYFAkr4ulcACgkQfFNSmcDyxYAHtQCeK86raCxi0+1vLSObZFIVlvRS
wP0An1tGhWURFW4YIOz/5B0yhXCMjBv5
=hthW
-----END PGP SIGNATURE-----