Re: cvsimport bug on branches [was: conversion to git]
Steffen Prohaska <[email protected]>
| Newsgroups | gmane.comp.version-control.git,gmane.comp.gnu.m4.patches |
|---|---|
| Message-ID | <[email protected]> |
On Sep 21, 2007, at 3:17 AM, Eric Blake wrote: > According to Eric Blake on 9/19/2007 5:13 PM: >> I'm working on converting M4 to git. >> >> The initial git conversion is complete. Feel free to check it out: >> >> http://git.savannah.gnu.org/gitweb/?p=m4.git > > Unfortunately, after publishing this repository, I noticed that > there is a > bug in git-cvsimport, when a vendor branch is created that contains > fewer > files than the point it branched from. Those files were not > removed from > the commit on the new branch, which means the git repository > contains too > many files compared to what the CVS repository had for any checkout > along > the branch. > > [...] git-cvsimport may have more problems, see e.g. http://marc.info/?l=git&m=118385565913953&w=2 http://marc.info/?l=git&m=118260312708709&w=2 > Now that the repository is published, what's the best way to > correct the > history for the git m4-1.4.1 tag, to correctly pick the m4-1.4 > commit as > its parent, and to omit the files that were intentionally omitted > from the > CVS branch it was imported from? Hard to say. The best is to avoid git-cvsimport if you need to import branches correctly. And you should do validate the result of any import by comparing a working copy checked out from CVS with a working copy checked out from git. Never trust the cvs to git importers. > What needs to be done to git-cvsimport to make it recognize files that > were omitted from CVS branch creation points, to avoid this problem > in the > first place? I'd recommend not to use git-cvsimport but better use a different converter. For me parsecvs [1] works. I'd also give cvs2svn's git support [2] a try. cvs2svn strives much harder to report errors and handle complex history correctly. parsecvs for example just crashes on corrupted RCS files, while cvs2svn reports the problem. But if your CVS repository is good parsecvs is much faster. fromcvs/togit was also mentioned a couple of times on the list. It worked for me the last time I tried it. But I did no in depth validation of the result. I still believe it would be good to add a warning to the documentation of git-cvsimport and provide links to alternatives. Steffen [1] http://gitweb.freedesktop.org/?p=users/keithp/parsecvs.git [2] http://marc.info/?l=git&m=118592701426175&w=2