{"thread":{"id":"4611","subject":"Incremental CVS update","startedAt":"2006-06-22T12:26:59Z","lastAt":"2006-06-22T20:08:09Z","messageCount":3,"participants":["Jon Smirl","Martin Langhoff"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"22260","messageId":"9e4733910606220526o14ebe76ala4d327f012a0e8f5@mail.gmail.com","threadId":"4611","inReplyTo":null,"subject":"Incremental CVS update","fromName":"Jon Smirl","fromEmail":"jonsmirl@gmail.com","sentAt":"2006-06-22T12:26:59Z","receivedAt":"2006-06-22T12:26:59Z","isPatch":false,"sender":{"key":"jonsmirl@gmail.com","avatar":"https://gravatar.com/avatar/cff3bf5bfdfa6708b905712ff91f0f9b8aaca161659f38c02b787920d5d28b7e?d=mp&s=160"},"body":"cvsps keeps it's incremental status in ~/.cvps/*. parsecvs might want\nto keep it's status in the .git repository and use tags to locate it.\nYou could even have a utility to show when and what was imported. By\nkeeping everything in git it doesn't matter who runs the incremental\nupdate commands.\n\n-- \nJon Smirl\njonsmirl@gmail.com\n"},{"id":"22295","messageId":"46a038f90606221236j2c5c9692yecef924aa769c1c9@mail.gmail.com","threadId":"4611","inReplyTo":"9e4733910606220526o14ebe76ala4d327f012a0e8f5@mail.gmail.com","subject":"Re: Incremental CVS update","fromName":"Martin Langhoff","fromEmail":"martin.langhoff@gmail.com","sentAt":"2006-06-22T19:36:00Z","receivedAt":"2006-06-22T19:36:00Z","isPatch":false,"sender":{"key":"martin.langhoff@gmail.com","avatar":"https://gravatar.com/avatar/1e3f311b6c4c15836501901ca58f8c0b0667246488084ba524d8bc9867e22fd9?d=mp&s=160"},"body":"On 6/23/06, Jon Smirl <jonsmirl@gmail.com> wrote:\n> cvsps keeps it's incremental status in ~/.cvps/*. parsecvs might want\n> to keep it's status in the .git repository and use tags to locate it.\n> You could even have a utility to show when and what was imported. By\n> keeping everything in git it doesn't matter who runs the incremental\n> update commands.\n\nJon,\n\nwhat cvsps keeps is a cache of what it knows about the repo history,\nto ask only for new commits. Now, cvsps will always write to STDOUT\nthe full history, and git-cvsimport discards the commits it has\nalready seen, based on reading the state of each git head.\n\nSo cvsps + git-cvsimport don't keep any extra data around, and I am\n100% certain that parsecvs don't need that either.\n\ncheers,\n\n\nmartin\n"},{"id":"22300","messageId":"9e4733910606221308v2f995adev8c5b721be0a009e2@mail.gmail.com","threadId":"4611","inReplyTo":"46a038f90606221236j2c5c9692yecef924aa769c1c9@mail.gmail.com","subject":"Re: Incremental CVS update","fromName":"Jon Smirl","fromEmail":"jonsmirl@gmail.com","sentAt":"2006-06-22T20:08:09Z","receivedAt":"2006-06-22T20:08:09Z","isPatch":false,"sender":{"key":"jonsmirl@gmail.com","avatar":"https://gravatar.com/avatar/cff3bf5bfdfa6708b905712ff91f0f9b8aaca161659f38c02b787920d5d28b7e?d=mp&s=160"},"body":"On 6/22/06, Martin Langhoff <martin.langhoff@gmail.com> wrote:\n> On 6/23/06, Jon Smirl <jonsmirl@gmail.com> wrote:\n> > cvsps keeps it's incremental status in ~/.cvps/*. parsecvs might want\n> > to keep it's status in the .git repository and use tags to locate it.\n> > You could even have a utility to show when and what was imported. By\n> > keeping everything in git it doesn't matter who runs the incremental\n> > update commands.\n>\n> Jon,\n>\n> what cvsps keeps is a cache of what it knows about the repo history,\n> to ask only for new commits. Now, cvsps will always write to STDOUT\n> the full history, and git-cvsimport discards the commits it has\n> already seen, based on reading the state of each git head.\n\nThe cache is 723MB for the Mozilla repo. Since the info gets cached in\nmy home directory anyone else who needs to sync the repo doesn't get\nto use the cache.\n\n[jonsmirl@jonsmirl .cvsps]$ pwd\n/home/jonsmirl/.cvsps\n[jonsmirl@jonsmirl .cvsps]$ ls -l\ntotal 707492\n-rw-rw-r-- 1 jonsmirl jonsmirl 723758657 Jun 15 16:10 #home#mozcvs##mozilla\n[jonsmirl@jonsmirl .cvsps]$\n\n\nKeith is rewriting parsecvs. If you analyze all of the data\nstructures, the info needed for the conversion should be able to fit\ninto well under 100MB instead of the ~2GB the current programs are\nusing.\n\nThere are lots of ways to reduce memory consumption. You can turm CVS\nrevisions into git IDs as soon as the revision is seen. That lets you\nget away from tracking file names and long CVS revision numbers. It\nalso works to turn the author/log fields immediately into a hash. When\npossible switching to arrays instead of linked list is smaller too.\n\nSome stats:\n1M revisions\n200K unique changesets (author/log combos)\n200KB symbols\n1,800 branches\n\ncvsps has the lowest memory consumption, it uses 1200 bytes per\nrevision. It looks like it is possible to lower this to less than 100\nbytes per rev.\n\n>\n> So cvsps + git-cvsimport don't keep any extra data around, and I am\n> 100% certain that parsecvs don't need that either.\n>\n> cheers,\n>\n>\n> martin\n>\n\n\n-- \nJon Smirl\njonsmirl@gmail.com\n"}]}