{"thread":{"id":"9955","subject":"cvsimport bug on branches [was: conversion to git]","startedAt":"2007-09-21T01:17:47Z","lastAt":"2007-09-22T15:08:59Z","messageCount":11,"participants":["Eric Blake","Steffen Prohaska","Linus Torvalds","Robin Rosenberg","Johannes Schindelin","Martin Langhoff","Simon 'corecode' Schubert"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"53687","messageId":"46F31BBB.1040901@byu.net","threadId":"9955","inReplyTo":"loom.20070920T010842-272@post.gmane.org","subject":"cvsimport bug on branches [was: conversion to git]","fromName":"Eric Blake","fromEmail":"ebb9@byu.net","sentAt":"2007-09-21T01:17:47Z","receivedAt":"2007-09-21T01:17:47Z","isPatch":false,"sender":{"key":"eblake@redhat.com","avatar":"https://avatars.githubusercontent.com/u/32933908?v=4"},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nAccording to Eric Blake on 9/19/2007 5:13 PM:\n> I'm working on converting M4 to git.\n> \n> The initial git conversion is complete.  Feel free to check it out:\n> \n> http://git.savannah.gnu.org/gitweb/?p=m4.git\n\nUnfortunately, after publishing this repository, I noticed that there is a\nbug in git-cvsimport, when a vendor branch is created that contains fewer\nfiles than the point it branched from.  Those files were not removed from\nthe commit on the new branch, which means the git repository contains too\nmany files compared to what the CVS repository had for any checkout along\nthe branch.\n\nFor example, look at the m4-1.4.1 tag.  In CVS,\n\nhttp://cvs.savannah.gnu.org/viewvc/m4/?root=m4&hideattic=0&pathrev=m4-1_4_1\n\nshows the following:\nABOUT-NLS (dead) \tNo revisions exist on m4-1_4_1\n\nand for the file ChangeLog, the predecessor of m4-1_4_1 (rev 1.1.1.1.2.1)\nwas m4-1_4 (rev 1.1.1.1):\n\nhttp://cvs.savannah.gnu.org/viewvc/m4/ChangeLog?hideattic=0&view=log&root=m4&pathrev=m4-1_4_1\n\n\nBut after git-cvsimport (using git 1.5.3), tag m4-1.4.1 is shown on the\nbranch-1_4 branch, but with unrelated m4-1.4ppre2 as parent, instead of\nthe correct m4-1.4:\n\nhttp://git.sv.gnu.org/gitweb/?p=m4.git;a=shortlog;h=ab2ce6be\n\nand as a result, the tree includes ABOUT-NLS (which was correctly a part\nof the m4-1.4ppre2 tag on the master branch):\n\nhttp://git.sv.gnu.org/gitweb/?p=m4.git;a=tree;h=ab2ce6bec48;hb=ab2ce6bec4\n\n\nNow that the repository is published, what's the best way to correct the\nhistory for the git m4-1.4.1 tag, to correctly pick the m4-1.4 commit as\nits parent, and to omit the files that were intentionally omitted from the\nCVS branch it was imported from?\n\nWhat needs to be done to git-cvsimport to make it recognize files that\nwere omitted from CVS branch creation points, to avoid this problem in the\nfirst place?\n\n- --\nDon't work too hard, make some time for fun as well!\n\nEric Blake             ebb9@byu.net\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.5 (Cygwin)\nComment: Public key at home.comcast.net/~ericblake/eblake.gpg\nComment: Using GnuPG with Mozilla - http://enigmail.mozdev.org\n\niD8DBQFG8xu684KuGfSFAYARAjd8AJ0eOWw1TFGt4zpQKIDFTGRjxzI/cgCghBpM\nW91wfRwc8Q2hoMO1WCWYtzM=\n=zzNR\n-----END PGP SIGNATURE-----\n"},{"id":"53698","messageId":"8D5EA3F4-9642-4604-963E-838D03650FBC@zib.de","threadId":"9955","inReplyTo":"46F31BBB.1040901@byu.net","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Steffen Prohaska","fromEmail":"prohaska@zib.de","sentAt":"2007-09-21T05:18:50Z","receivedAt":"2007-09-21T05:18:50Z","isPatch":false,"sender":{"key":"prohaska@zib.de","avatar":"https://avatars.githubusercontent.com/u/217580?v=4"},"body":"\nOn Sep 21, 2007, at 3:17 AM, Eric Blake wrote:\n\n> According to Eric Blake on 9/19/2007 5:13 PM:\n>> I'm working on converting M4 to git.\n>>\n>> The initial git conversion is complete.  Feel free to check it out:\n>>\n>> http://git.savannah.gnu.org/gitweb/?p=m4.git\n>\n> Unfortunately, after publishing this repository, I noticed that  \n> there is a\n> bug in git-cvsimport, when a vendor branch is created that contains  \n> fewer\n> files than the point it branched from.  Those files were not  \n> removed from\n> the commit on the new branch, which means the git repository  \n> contains too\n> many files compared to what the CVS repository had for any checkout  \n> along\n> the branch.\n>\n> [...]\n\ngit-cvsimport may have more problems, see e.g.\n\nhttp://marc.info/?l=git&m=118385565913953&w=2\nhttp://marc.info/?l=git&m=118260312708709&w=2\n\n\n> Now that the repository is published, what's the best way to  \n> correct the\n> history for the git m4-1.4.1 tag, to correctly pick the m4-1.4  \n> commit as\n> its parent, and to omit the files that were intentionally omitted  \n> from the\n> CVS branch it was imported from?\n\nHard to say. The best is to avoid git-cvsimport if you need\nto import branches correctly.\n\nAnd you should do validate the result of any import by comparing\na working copy checked out from CVS with a working copy checked\nout from git.\n\nNever trust the cvs to git importers.\n\n\n> What needs to be done to git-cvsimport to make it recognize files that\n> were omitted from CVS branch creation points, to avoid this problem  \n> in the\n> first place?\n\nI'd recommend not to use git-cvsimport but better use\na different converter.\n\nFor me parsecvs [1] works.\n\nI'd also give cvs2svn's git support [2] a try.\n\ncvs2svn strives much harder to report errors and handle complex\nhistory correctly. parsecvs for example just crashes on corrupted\nRCS files, while cvs2svn reports the problem. But if your CVS\nrepository is good parsecvs is much faster.\n\nfromcvs/togit was also mentioned a couple of times on the list.\nIt worked for me the last time I tried it. But I did no in depth\nvalidation of the result.\n\nI still believe it would be good to add a warning to the\ndocumentation of git-cvsimport and provide links to alternatives.\n\n\tSteffen\n\n[1] http://gitweb.freedesktop.org/?p=users/keithp/parsecvs.git\n[2] http://marc.info/?l=git&m=118592701426175&w=2\n"},{"id":"53730","messageId":"alpine.LFD.0.999.0709210840190.16478@woody.linux-foundation.org","threadId":"9955","inReplyTo":"8D5EA3F4-9642-4604-963E-838D03650FBC@zib.de","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Linus Torvalds","fromEmail":"torvalds@linux-foundation.org","sentAt":"2007-09-21T15:42:52Z","receivedAt":"2007-09-21T15:42:52Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 21 Sep 2007, Steffen Prohaska wrote:\n> \n> Hard to say. The best is to avoid git-cvsimport if you need\n> to import branches correctly.\n\nYes. git-cvsimport started out as a pretty quick hack, and depends on \ncvsps which is another fairly hacky thing.\n\nThe big advantage of git-cvsimport is that it can do incremental imports, \nwhich I don't think the other methods do. But if there is any choice at \nall, and especially if you're not that interested in the incremental \nfeature (ie you can cut over to git, and perhaps use git-cvsserver to \n\"supprt\" CVS users) the other CVS importers are likely to be much better.\n\n\t\t\tLinus\n"},{"id":"53732","messageId":"200709211915.35642.robin.rosenberg.lists@dewire.com","threadId":"9955","inReplyTo":"alpine.LFD.0.999.0709210840190.16478@woody.linux-foundation.org","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2007-09-21T17:15:34Z","receivedAt":"2007-09-21T17:15:34Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"fredag 21 september 2007 skrev Linus Torvalds:\n> \n> On Fri, 21 Sep 2007, Steffen Prohaska wrote:\n> > \n> > Hard to say. The best is to avoid git-cvsimport if you need\n> > to import branches correctly.\n> \n> Yes. git-cvsimport started out as a pretty quick hack, and depends on \n> cvsps which is another fairly hacky thing.\n> \n> The big advantage of git-cvsimport is that it can do incremental imports, \n> which I don't think the other methods do. But if there is any choice at \n> all, and especially if you're not that interested in the incremental \n> feature (ie you can cut over to git, and perhaps use git-cvsserver to \n> \"supprt\" CVS users) the other CVS importers are likely to be much better.\n\nfromcvs does incremental import and it's very fast and uses much less memory \nthan cvsimport. It needs the rcs files however and will not convert \nnon-branch tags.\n\n-- robin\n"},{"id":"53745","messageId":"Pine.LNX.4.64.0709212121330.28395@racer.site","threadId":"9955","inReplyTo":"200709211915.35642.robin.rosenberg.lists@dewire.com","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-21T20:22:04Z","receivedAt":"2007-09-21T20:22:04Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Fri, 21 Sep 2007, Robin Rosenberg wrote:\n\n> fredag 21 september 2007 skrev Linus Torvalds:\n> > \n> > The big advantage of git-cvsimport is that it can do incremental \n> > imports, which I don't think the other methods do. But if there is any \n> > choice at all, and especially if you're not that interested in the \n> > incremental feature (ie you can cut over to git, and perhaps use \n> > git-cvsserver to \"supprt\" CVS users) the other CVS importers are \n> > likely to be much better.\n> \n> fromcvs does incremental import and it's very fast and uses much less \n> memory than cvsimport. It needs the rcs files however and will not \n> convert non-branch tags.\n\nPlus you have to install Ruby.  Just wanted people to know.\n\nCiao,\nDscho\n"},{"id":"53747","messageId":"200709212242.53131.robin.rosenberg.lists@dewire.com","threadId":"9955","inReplyTo":"Pine.LNX.4.64.0709212121330.28395@racer.site","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2007-09-21T20:42:51Z","receivedAt":"2007-09-21T20:42:51Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"fredag 21 september 2007 skrev Johannes Schindelin:\n> Hi,\n> \n> On Fri, 21 Sep 2007, Robin Rosenberg wrote:\n> \n> > fredag 21 september 2007 skrev Linus Torvalds:\n> > > \n> > > The big advantage of git-cvsimport is that it can do incremental \n> > > imports, which I don't think the other methods do. But if there is any \n> > > choice at all, and especially if you're not that interested in the \n> > > incremental feature (ie you can cut over to git, and perhaps use \n> > > git-cvsserver to \"supprt\" CVS users) the other CVS importers are \n> > > likely to be much better.\n> > \n> > fromcvs does incremental import and it's very fast and uses much less \n> > memory than cvsimport. It needs the rcs files however and will not \n> > convert non-branch tags.\n> \n> Plus you have to install Ruby.  Just wanted people to know.\n\nYou don't like Ruby, do you? It worth it, really.\n\n-- robin\n"},{"id":"53750","messageId":"Pine.LNX.4.64.0709212212020.28395@racer.site","threadId":"9955","inReplyTo":"200709212242.53131.robin.rosenberg.lists@dewire.com","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-09-21T21:12:34Z","receivedAt":"2007-09-21T21:12:34Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Fri, 21 Sep 2007, Robin Rosenberg wrote:\n\n> fredag 21 september 2007 skrev Johannes Schindelin:\n> > Hi,\n> > \n> > On Fri, 21 Sep 2007, Robin Rosenberg wrote:\n> > \n> > > fredag 21 september 2007 skrev Linus Torvalds:\n> > > > \n> > > > The big advantage of git-cvsimport is that it can do incremental \n> > > > imports, which I don't think the other methods do. But if there is any \n> > > > choice at all, and especially if you're not that interested in the \n> > > > incremental feature (ie you can cut over to git, and perhaps use \n> > > > git-cvsserver to \"supprt\" CVS users) the other CVS importers are \n> > > > likely to be much better.\n> > > \n> > > fromcvs does incremental import and it's very fast and uses much less \n> > > memory than cvsimport. It needs the rcs files however and will not \n> > > convert non-branch tags.\n> > \n> > Plus you have to install Ruby.  Just wanted people to know.\n> \n> You don't like Ruby, do you? It worth it, really.\n\nNo, it's yet another dependency.  And the quality of the code still \ndepends on the programmer, not the language.\n\nCiao,\nDscho\n"},{"id":"53760","messageId":"200709220116.26369.robin.rosenberg.lists@dewire.com","threadId":"9955","inReplyTo":"Pine.LNX.4.64.0709212212020.28395@racer.site","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2007-09-21T23:16:24Z","receivedAt":"2007-09-21T23:16:24Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"fredag 21 september 2007 skrev Johannes Schindelin:\n> No, it's yet another dependency.  And the quality of the code still \n> depends on the programmer, not the language.\n\nI think I can agree there, on both counts. But, if you want a good incremental \nCVS importer and have access to the rcs files, that's the one there is.\n\ngit-cvsimport has a dependency on cvsps, which isn't included. You have to\nto look it up yourself chooing among a dozen unequally bad versions. \nInstalling ruby isn't any harder.\n\nThe dependency excludes it from being included with Git, but it does not \ndisqualify it as a tool on it's own.\n\n-- robin\n"},{"id":"53767","messageId":"46a038f90709211705y351dbe6cp50c249dc0fcfd5a0@mail.gmail.com","threadId":"9955","inReplyTo":"alpine.LFD.0.999.0709210840190.16478@woody.linux-foundation.org","subject":"Re: cvsimport bug on branches [was: conversion to git]","fromName":"Martin Langhoff","fromEmail":"martin.langhoff@gmail.com","sentAt":"2007-09-22T00:05:38Z","receivedAt":"2007-09-22T00:05:38Z","isPatch":false,"sender":{"key":"martin.langhoff@gmail.com","avatar":"https://gravatar.com/avatar/1e3f311b6c4c15836501901ca58f8c0b0667246488084ba524d8bc9867e22fd9?d=mp&s=160"},"body":"On 9/22/07, Linus Torvalds <torvalds@linux-foundation.org> wrote:\n> The big advantage of git-cvsimport is that it can do incremental imports,\n\nIndeed. And it can take over incrementals on a GIT repo initially\nimported by parsecvs or cvs2git. That's the recommended practice for\ntracking non-trivial CVS repos -- IOWs \"that's what I do\" ;-)\n\ncheers,\n\n\nm\n"},{"id":"53789","messageId":"86B33DFE-65E6-4F8D-8483-509ACA4FA2F8@zib.de","threadId":"9955","inReplyTo":"200709220116.26369.robin.rosenberg.lists@dewire.com","subject":"fromcvs installation [was: cvsimport bug on branches [was: conversion to git]]","fromName":"Steffen Prohaska","fromEmail":"prohaska@zib.de","sentAt":"2007-09-22T08:07:22Z","receivedAt":"2007-09-22T08:07:22Z","isPatch":false,"sender":{"key":"prohaska@zib.de","avatar":"https://avatars.githubusercontent.com/u/217580?v=4"},"body":"\nOn Sep 22, 2007, at 1:16 AM, Robin Rosenberg wrote:\n\n> fredag 21 september 2007 skrev Johannes Schindelin:\n>> No, it's yet another dependency.  And the quality of the code still\n>> depends on the programmer, not the language.\n>\n> I think I can agree there, on both counts. But, if you want a good  \n> incremental\n> CVS importer and have access to the rcs files, that's the one there  \n> is.\n>\n> git-cvsimport has a dependency on cvsps, which isn't included. You  \n> have to\n> to look it up yourself chooing among a dozen unequally bad versions.\n> Installing ruby isn't any harder.\n>\n> The dependency excludes it from being included with Git, but it  \n> does not\n> disqualify it as a tool on it's own.\n\nNonetheless a more detailed description how to install fromcvs\nwould be helpful. I remember it was not obvious to me.\n\nThe README of fromcvs only says\n'''\nPrerequisites:\n- ruby (1.8.5 known working)\n- fromcvs, <http://ww2.fs.ei.tum.de/~corecode/hg/fromcvs>\n- rcsparse, <http://ww2.fs.ei.tum.de/~corecode/hg/rcsparse> (ruby  \nmodule)\n- Ruby/RBTree, <http://raa.ruby-lang.org/project/ruby-rbtree/>\n- for git: git-fast-import, part of git 1.5\n- for db/commitset: sqlite3 + sqlite3-ruby (available as gem)\n'''\n\nI didn't use ruby before and had no idea how to install a ruby module\nor what 'available as gem' means. And by the way, it was not obvious\nfor me that I can download the tip of the mercurial branch by clicking\non the 'gz' link at the top of the page.\n\nI think a step by step explanation how to proceed would have helped me.\n\n\tSteffen\n"},{"id":"53804","messageId":"46F5300B.2000707@fs.ei.tum.de","threadId":"9955","inReplyTo":"86B33DFE-65E6-4F8D-8483-509ACA4FA2F8@zib.de","subject":"Re: fromcvs installation [was: cvsimport bug on branches [was: conversion to git]]","fromName":"Simon 'corecode' Schubert","fromEmail":"corecode@fs.ei.tum.de","sentAt":"2007-09-22T15:08:59Z","receivedAt":"2007-09-22T15:08:59Z","isPatch":false,"sender":{"key":"corecode@fs.ei.tum.de","avatar":"https://gravatar.com/avatar/eff9dbf0cdac0d1e6a6cd7ed0e50763edcb376b493b5253a35ff167918ad79e1?d=mp&s=160"},"body":"Steffen Prohaska wrote:\n> Nonetheless a more detailed description how to install fromcvs\n> would be helpful. I remember it was not obvious to me.\n[..]\n> I think a step by step explanation how to proceed would have helped me.\n\nCould you write down what you had to do and where the problems are as an\nextension to the current README?\n\nThanks,\n  simon\n"}]}