Re: A flaw in finding minimal-complexity symbol conversions?
Max Bowsher <[email protected]> Tue, 15 Dec 2009 19:25:36 +0000
| Newsgroups | gmane.comp.version-control.subversion.cvs2svn.devel |
|---|---|
| Message-ID | <[email protected]> |
Michael Haggerty wrote: > Max Bowsher wrote: >> I've been staring at a CVS repository I need to convert and one thing I >> note is that there are often cases where a branch and a tag sprout from >> the same point and need exactly the same fixup changes. >> >> After pondering this for a while, I'm mostly convinced that implementing >> this is more trouble than it's worth, because you'd have to do something >> along the lines of feeding back synthetic changesets into the >> opening/closings logic, at which point my head starts to explode. >> >> But I just thought I'd bring up the topic, and see if anyone had some >> interesting insight. > > One obvious deficiency in the parent-choosing code is that it does not > consider file deletions. In other words, cvs2svn does not distinguish > between a potential parent that is identical to the new symbol and one > along the same LOD that has an *extra* file compared to the symbol. If > your fixups mainly involve file deletions, this may be your culprit. I > think that fixing this problem is tractable, though nontrivial. Indeed, I first thought that this was my problem. I agree that *this* problem is tractable. > I have wondered whether it would be possible to eliminate trivial > duplicates using some kind of content hash comparison. Effectively, git > does this automatically because of its content-addressed filesystem; two > commits that "coincidentally" have the same contents get the same SHA1 > and so *are* one and the same (modulo a "git gc"). Perhaps cvs2svn > could do something similar when choosing parents. (Obviously, the > revision contents would not have to be hashed; it would be enough to > hash a proxy, like the set of ids of CVS file revisions that make up the > commit.) Not a bad idea, and would actually work fine for my use-case, but only if it was applied sufficiently late in the passes - I need my symbols to be able to root themselves in synthetic fixup commits created for other symbols. Of course, even better would be if we could come up with a way which didn't require strict equality, but could feed back generated fixup changesets into the "best match" logic. Max. ------------------------------------------------------ http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=2430618 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) iEYEARECAAYFAksn4uoACgkQfFNSmcDyxYCLjACgzt0iytKvUSqaDltq3hd92Fge SqoAn3tvxrR9gPdq4mEtgOgTYKjw1Ul0 =MMnZ -----END PGP SIGNATURE-----