{"thread":{"id":"4387","subject":"Using subversion tools on Mozilla CVS","startedAt":"2006-06-04T03:09:00Z","lastAt":"2006-06-04T15:48:27Z","messageCount":3,"participants":["Jon Smirl","Sean"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"21185","messageId":"9e4733910606032009p252ff5fai7401401427ae3ec3@mail.gmail.com","threadId":"4387","inReplyTo":null,"subject":"Using subversion tools on Mozilla CVS","fromName":"Jon Smirl","fromEmail":"jonsmirl@gmail.com","sentAt":"2006-06-04T03:09:00Z","receivedAt":"2006-06-04T03:09:00Z","isPatch":false,"sender":{"key":"jonsmirl@gmail.com","avatar":"https://gravatar.com/avatar/cff3bf5bfdfa6708b905712ff91f0f9b8aaca161659f38c02b787920d5d28b7e?d=mp&s=160"},"body":"I found this tool written in Python for importing CVS into Subversion.\nIt seems to be handling the Mozilla CVS repository with fewer problems\nthan parsecvs.\n\nhttp://cvs2svn.tigris.org/cvs2svn.html\n\nSince I'm not a native Python speaker, anyone else want to give a try\nat changing it to support git?\n\nIt found these symbols to be ambiguous, so I manually forced them the\nway they look like they should be.\n\ncvs2svn --trunk-only -s svntest \\\n  --force-tag=THUNDERBIRD_0_7_RELEASE --force-tag=CVS \\\n --force-branch=JAVADEV_RTM_20001102 \\\n --force-branch=XPCOM_BRANCH_LANDING_981104 \\\n --force-branch=MOZILLA_1_3_BRANCH \\\n --force-branch=N3 \\\n --force-branch=SeaMonkey_M4_BRANCH \\\n --force-branch=NORMANDY_BRANCH \\\n --force-branch=FASTLOAD_20010529_BRANCH \\\n --force-branch=MozillaSourceClassic_19981026_BRANCH \\\n --force-branch=RDF_19981124_BRANCH \\\n --force-branch=OTIS_TEST_BRANCH \\\n --force-branch=Netscape61_PR1_Mini_BRANCH \\\n --force-branch=XPCOM20_BRANCH \\\n --force-branch=XPC_IDISP_20020417_BRANCH \\\n --force-branch=RDF_122898_BRANCH \\\n --force-branch=MOZILLA_1_4_BRANCH \\\n --force-branch=Netscape_20000922_BRANCH \\\n --force-branch=NETSCAPE_7_0_OEM_BRANCH \\\n --force-branch=RDF_19990407_BRANCH \\\n --force-branch=ALERT_SERVICE_BRANCH \\\n --force-branch=SeaMonkey_M12_BRANCH \\\n --force-branch=SpiderMonkey140_NES40Rtm_Branch \\\nmozilla/mozilla\n\n-- \nJon Smirl\njonsmirl@gmail.com\n"},{"id":"21209","messageId":"BAYC1-PASMTP08068F9BD23CF4FA8A1BDBAE970@CEZ.ICE","threadId":"4387","inReplyTo":"9e4733910606032009p252ff5fai7401401427ae3ec3@mail.gmail.com","subject":"Re: Using subversion tools on Mozilla CVS","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2006-06-04T15:20:29Z","receivedAt":"2006-06-04T15:20:29Z","isPatch":false,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Sat, 3 Jun 2006 23:09:00 -0400\n\"Jon Smirl\" <jonsmirl@gmail.com> wrote:\n\n> I found this tool written in Python for importing CVS into Subversion.\n> It seems to be handling the Mozilla CVS repository with fewer problems\n> than parsecvs.\n> \n> http://cvs2svn.tigris.org/cvs2svn.html\n> \n> Since I'm not a native Python speaker, anyone else want to give a try\n> at changing it to support git?\n \nHi Jon,\n\nIf you haven't tried to import into git with a recent version of\ngit-cvsimport, it would be worth a shot.\n\nAs for the tool you've referenced above, it does look pretty good.\nIt makes multiple passes and saves to a temp file after each, letting\nyou resume from that point and means it can use less memory overall.\n\nIt can produce a pretty straight forward looking dump file if you\npass it the \"--dump-only\" option, rather than it pushing the results\ninto svn; for instance:\n\n $ cvs2svn --dump-only --dumpfile DUMPFILE <cvs directory>\n\nIt shouldn't be too hard to write a script that imports the revisions\nfound in the resulting DUMPFILE into git.\n\nSean\n"},{"id":"21210","messageId":"9e4733910606040848t5ce63f2dv84fc8bad3e33f867@mail.gmail.com","threadId":"4387","inReplyTo":"BAYC1-PASMTP08068F9BD23CF4FA8A1BDBAE970@CEZ.ICE","subject":"Re: Using subversion tools on Mozilla CVS","fromName":"Jon Smirl","fromEmail":"jonsmirl@gmail.com","sentAt":"2006-06-04T15:48:27Z","receivedAt":"2006-06-04T15:48:27Z","isPatch":false,"sender":{"key":"jonsmirl@gmail.com","avatar":"https://gravatar.com/avatar/cff3bf5bfdfa6708b905712ff91f0f9b8aaca161659f38c02b787920d5d28b7e?d=mp&s=160"},"body":"On 6/4/06, Sean <seanlkml@sympatico.ca> wrote:\n> On Sat, 3 Jun 2006 23:09:00 -0400\n> \"Jon Smirl\" <jonsmirl@gmail.com> wrote:\n>\n> > I found this tool written in Python for importing CVS into Subversion.\n> > It seems to be handling the Mozilla CVS repository with fewer problems\n> > than parsecvs.\n> >\n> > http://cvs2svn.tigris.org/cvs2svn.html\n> >\n> > Since I'm not a native Python speaker, anyone else want to give a try\n> > at changing it to support git?\n>\n> Hi Jon,\n>\n> If you haven't tried to import into git with a recent version of\n> git-cvsimport, it would be worth a shot.\n\nI tried it a couple of weeks ago and it barely made it into the\nconversion. This repository is massive so if the tool doesn't scale\nextremely well it quickly collapses.\n\nI can't get it to run all the way, but I estimate that the git\nparsecvs tool will need 11GB of RAM to import Mozilla CVS. Each time I\ntry to import the repository it runs 8-10 hours before failing. 11GB\nprocess means you need a 64b machine.\n\n> As for the tool you've referenced above, it does look pretty good.\n> It makes multiple passes and saves to a temp file after each, letting\n> you resume from that point and means it can use less memory overall.\n\nThis tool imported the Mozilla repository to SVN on the first try. It\nneeds about 10GB of temp disk space but it never took over 100MB of\nRAM while running. It is much more advanced than anything git has. I'd\nrecommend reworking it to become git's main CVS import tool.\n\n> It can produce a pretty straight forward looking dump file if you\n> pass it the \"--dump-only\" option, rather than it pushing the results\n> into svn; for instance:\n>\n>  $ cvs2svn --dump-only --dumpfile DUMPFILE <cvs directory>\n>\n> It shouldn't be too hard to write a script that imports the revisions\n> found in the resulting DUMPFILE into git.\n\nI haven't learned enough about GIT yet to figure out how to import the\nchange sets.\nThe cvs2svn tool uses eight passes to convert CVS into something SVN can use.\nIn the last pass it has turned everything into change sets and it\npipes them to a SVN process that commits them. Mozilla has 205,787\nchange sets. It would be best if there was some way to pipe things\ninto git, I suspect the dumpfile for Mozilla would be huge.\n\nThis command imports Mozilla CVS, I had to add --use-cvs since the RCS\ntools can't handle all the strange options used in Mozilla CVS files.\n\ncvs2svn --use-cvs -s svntest \\\n  --force-tag=THUNDERBIRD_0_7_RELEASE --force-tag=CVS \\\n --force-branch=JAVADEV_RTM_20001102 \\\n --force-branch=XPCOM_BRANCH_LANDING_981104 \\\n --force-branch=MOZILLA_1_3_BRANCH \\\n --force-branch=N3 \\\n --force-branch=SeaMonkey_M4_BRANCH \\\n --force-branch=NORMANDY_BRANCH \\\n --force-branch=FASTLOAD_20010529_BRANCH \\\n --force-branch=MozillaSourceClassic_19981026_BRANCH \\\n --force-branch=RDF_19981124_BRANCH \\\n --force-branch=OTIS_TEST_BRANCH \\\n --force-branch=Netscape61_PR1_Mini_BRANCH \\\n --force-branch=XPCOM20_BRANCH \\\n --force-branch=XPC_IDISP_20020417_BRANCH \\\n --force-branch=RDF_122898_BRANCH \\\n --force-branch=MOZILLA_1_4_BRANCH \\\n --force-branch=Netscape_20000922_BRANCH \\\n --force-branch=NETSCAPE_7_0_OEM_BRANCH \\\n --force-branch=RDF_19990407_BRANCH \\\n --force-branch=ALERT_SERVICE_BRANCH \\\n --force-branch=SeaMonkey_M12_BRANCH \\\n --force-branch=SpiderMonkey140_NES40Rtm_Branch \\\nmozilla/mozilla\n\nIt takes about 16 hours to convert MozCVS with this command on my\nmachine. Once you have done the full conversion you can rerun the last\npass without rerunning the others. That makes it easier to develop GIT\nsupport since you don't have to do the entire conversion each time.\n\ncvs2svn -p 8 --use-cvs -s svntest \\\n  --force-tag=THUNDERBIRD_0_7_RELEASE --force-tag=CVS \\\n --force-branch=JAVADEV_RTM_20001102 \\\n --force-branch=XPCOM_BRANCH_LANDING_981104 \\\n --force-branch=MOZILLA_1_3_BRANCH \\\n --force-branch=N3 \\\n --force-branch=SeaMonkey_M4_BRANCH \\\n --force-branch=NORMANDY_BRANCH \\\n --force-branch=FASTLOAD_20010529_BRANCH \\\n --force-branch=MozillaSourceClassic_19981026_BRANCH \\\n --force-branch=RDF_19981124_BRANCH \\\n --force-branch=OTIS_TEST_BRANCH \\\n --force-branch=Netscape61_PR1_Mini_BRANCH \\\n --force-branch=XPCOM20_BRANCH \\\n --force-branch=XPC_IDISP_20020417_BRANCH \\\n --force-branch=RDF_122898_BRANCH \\\n --force-branch=MOZILLA_1_4_BRANCH \\\n --force-branch=Netscape_20000922_BRANCH \\\n --force-branch=NETSCAPE_7_0_OEM_BRANCH \\\n --force-branch=RDF_19990407_BRANCH \\\n --force-branch=ALERT_SERVICE_BRANCH \\\n --force-branch=SeaMonkey_M12_BRANCH \\\n --force-branch=SpiderMonkey140_NES40Rtm_Branch \\\nmozilla/mozilla\n\n\n-- \nJon Smirl\njonsmirl@gmail.com\n"}]}