{"thread":{"id":"18850","subject":"Again with git-svn: File was not found in commit","startedAt":"2009-04-13T18:08:05Z","lastAt":"2009-04-28T16:15:38Z","messageCount":9,"participants":["David E. Wheeler","Eric Wong","Jakub Narebski"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"111208","messageId":"747CFDA3-AC27-44EB-A69C-BF9C29B05A31@kineticode.com","threadId":"18850","inReplyTo":null,"subject":"Again with git-svn: File was not found in commit","fromName":"David E. Wheeler","fromEmail":"david@kineticode.com","sentAt":"2009-04-13T18:08:05Z","receivedAt":"2009-04-13T18:08:05Z","isPatch":false,"sender":{"key":"david@kineticode.com","avatar":"https://gravatar.com/avatar/dde6538c64ea1f06f00d4b3fb0770f12765288fcd4f63a91752aa9c2a8ef54bd?d=mp&s=160"},"body":"Hello Gits,\n\nI'm looking to migrate [Bricolage][] from Subversion to Git. As such,  \nI'm running `git svn` to create a git repository for the Bricolage  \nrepository. I moved the files around in Subversion quite a while ago  \n(the trunk, branches, and tags directories used to be at the root, but  \nnow they're under a \"bricolage\" subdirectory), so there's a fair  \namount of duplication, but I don't mind that, because I can prune  \nthose dupes.\n\n[Bricolage]: http://bricolage.cc/\n\nSo I ran `git svn` like so:\n\n     md brictmp\n     cd brictmp\n     git svn init http://svn.bricolage.cc/bricolage --no-metadata -s\n     git config svn.authorsfile ~/Desktop/bricolage_committers.txt\n     git svn fetch\n\nAfter around 30 hours of the fan running full tilt on my MacBook Pro,  \ncreating 343 branches (yeah, we have a lot of tags), `git svn` exited  \nwith this error:\n\n     bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm was not  \nfound in commit\n     e5145931069a511e98a087d4cb1a8bb75f43f899 (r5256)\n\nThis seemed strange to me, so I had a look at SVN:\n\n     svn list -r5256 http://svn.bricolage.cc/bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm\n     ApacheConfig.pm\n\nSo the file *is* there in that revision. I had been running 1.6.1.2,  \nso I upgraded to 1.6.2.2 and ran `git svn fetch` again to see if it  \nwould pick up where it left off, but it returned the same error  \n(please don't tell me I have to start over!).\n\nI see that this issue has come up [before][], earlier this year; has  \nthere been any progress on it? Is there perhaps something I can do to  \nget this working?\n\n[before]: http://lists-archives.org/git/677591-git-svn-file-was-not-found-in-commit.html\n\nMany thanks,\n\nDavid\n"},{"id":"111893","messageId":"20090421180231.GB16642@dcvr.yhbt.net","threadId":"18850","inReplyTo":"747CFDA3-AC27-44EB-A69C-BF9C29B05A31@kineticode.com","subject":"Re: Again with git-svn: File was not found in commit","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2009-04-21T18:02:31Z","receivedAt":"2009-04-21T18:02:31Z","isPatch":false,"sender":{"key":"e@80x24.org","avatar":null},"body":"\"David E. Wheeler\" <david@kineticode.com> wrote:\n> After around 30 hours of the fan running full tilt on my MacBook Pro,  \n> creating 343 branches (yeah, we have a lot of tags), `git svn` exited  \n> with this error:\n>\n>     bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm was not  \n> found in commit\n>     e5145931069a511e98a087d4cb1a8bb75f43f899 (r5256)\n>\n> This seemed strange to me, so I had a look at SVN:\n>\n>     svn list -r5256 http://svn.bricolage.cc/bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm\n>     ApacheConfig.pm\n>\n> So the file *is* there in that revision. I had been running 1.6.1.2, so I \n> upgraded to 1.6.2.2 and ran `git svn fetch` again to see if it would pick \n> up where it left off, but it returned the same error (please don't tell \n> me I have to start over!).\n\nInteresting.  I finally managed to reproduce it over the weekend.  I'll\ntry to look into it later tonight.\n\n-- \nEric Wong\n"},{"id":"111894","messageId":"8EDD65AC-9C25-4281-86F6-E52A41331B00@kineticode.com","threadId":"18850","inReplyTo":"20090421180231.GB16642@dcvr.yhbt.net","subject":"Re: Again with git-svn: File was not found in commit","fromName":"David E. Wheeler","fromEmail":"david@kineticode.com","sentAt":"2009-04-21T18:16:37Z","receivedAt":"2009-04-21T18:16:37Z","isPatch":false,"sender":{"key":"david@kineticode.com","avatar":"https://gravatar.com/avatar/dde6538c64ea1f06f00d4b3fb0770f12765288fcd4f63a91752aa9c2a8ef54bd?d=mp&s=160"},"body":"On Apr 21, 2009, at 11:02 AM, Eric Wong wrote:\n\n>>    bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm was not\n>> found in commit\n>>    e5145931069a511e98a087d4cb1a8bb75f43f899 (r5256)\n>>\n>> This seemed strange to me, so I had a look at SVN:\n>>\n>>    svn list -r5256 http://svn.bricolage.cc/bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm\n>>    ApacheConfig.pm\n>>\n>> So the file *is* there in that revision. I had been running  \n>> 1.6.1.2, so I\n>> upgraded to 1.6.2.2 and ran `git svn fetch` again to see if it  \n>> would pick\n>> up where it left off, but it returned the same error (please don't  \n>> tell\n>> me I have to start over!).\n>\n> Interesting.  I finally managed to reproduce it over the weekend.   \n> I'll\n> try to look into it later tonight.\n\nThanks, appreciate it. I've gotten around it by going back to the old  \nCVS repository on SourceForge and migrating that, and then migrating  \nthe SVN repo only from after we moved to SVN. Then I'll just have to  \nstitch the CVS and SVN migrations together and I'll be done.\n\nBest,\n\nDavid\n"},{"id":"112327","messageId":"20090426015300.GA17212@dcvr.yhbt.net","threadId":"18850","inReplyTo":"8EDD65AC-9C25-4281-86F6-E52A41331B00@kineticode.com","subject":"Re: Again with git-svn: File was not found in commit","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2009-04-26T01:53:00Z","receivedAt":"2009-04-26T01:53:00Z","isPatch":false,"sender":{"key":"e@80x24.org","avatar":null},"body":"\"David E. Wheeler\" <david@kineticode.com> wrote:\n> On Apr 21, 2009, at 11:02 AM, Eric Wong wrote:\n>\n>>>    bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm was not\n>>> found in commit\n>>>    e5145931069a511e98a087d4cb1a8bb75f43f899 (r5256)\n>>>\n>>> This seemed strange to me, so I had a look at SVN:\n>>>\n>>>    svn list -r5256 http://svn.bricolage.cc/bricolage/branches/rev_1_8/lib/Bric/App/ApacheConfig.pm\n>>>    ApacheConfig.pm\n>>>\n>>> So the file *is* there in that revision. I had been running 1.6.1.2, \n>>> so I\n>>> upgraded to 1.6.2.2 and ran `git svn fetch` again to see if it would \n>>> pick\n>>> up where it left off, but it returned the same error (please don't  \n>>> tell\n>>> me I have to start over!).\n>>\n>> Interesting.  I finally managed to reproduce it over the weekend.   \n>> I'll\n>> try to look into it later tonight.\n>\n> Thanks, appreciate it. I've gotten around it by going back to the old  \n> CVS repository on SourceForge and migrating that, and then migrating the \n> SVN repo only from after we moved to SVN. Then I'll just have to stitch \n> the CVS and SVN migrations together and I'll be done.\n\nHopefully the workaround is working out for you.\n\nThe problem with r5256 is quite nasty and I can't think of a good\nautomated solution right now involving --stdlayout/branches/tags\n\n------------------------------------------------------------------------\nr5256 | theory | 2004-05-09 19:17:49 -0700 (Sun, 09 May 2004) | 2 lines\nChanged paths:\n   A /bricolage/branches/rev_1_8 (from /bricolage/branches/rev_1_8_temp/bricolage:5255)\n   D /bricolage/branches/rev_1_8_temp/bricolage\n\nPermanent home.\n\n------------------------------------------------------------------------\n\nThe problem is that the \"bricolage\" subdirectory became the top-level\ntree and git-svn doesn't have a way of detecting that.  This is\noccasionally a problem with other repos, too\n\nOverall, this repo is very nasty given the amount of times follow-parent\nneeds to be used (refs with a \"@<revno>\" suffix).  The --stdlayout\nswitch is really for the common repositories with a consistent depth for\nbranches/tags.  Unfortunately, SVN is way too freeform in this regard\nand mixed-depth branches/tags hierarchies have always been a problem :<\n\nIt might be a bit easier to write (or script) the \"fetch\" lines\n(like the one --stdlayout generates for trunk) for each tag/branch\nand maybe use --no-follow-parent.\n\n-- \nEric Wong\n"},{"id":"112328","messageId":"81EFD289-5E46-4B27-8DA4-C2039915CE2D@kineticode.com","threadId":"18850","inReplyTo":"20090426015300.GA17212@dcvr.yhbt.net","subject":"Re: Again with git-svn: File was not found in commit","fromName":"David E. Wheeler","fromEmail":"david@kineticode.com","sentAt":"2009-04-26T02:40:27Z","receivedAt":"2009-04-26T02:40:27Z","isPatch":false,"sender":{"key":"david@kineticode.com","avatar":"https://gravatar.com/avatar/dde6538c64ea1f06f00d4b3fb0770f12765288fcd4f63a91752aa9c2a8ef54bd?d=mp&s=160"},"body":"On Apr 25, 2009, at 6:53 PM, Eric Wong wrote:\n\n> Hopefully the workaround is working out for you.\n\n[Finally], yes.\n\n[Finally]: http://justatheory.com/computers/vcs/git/bricolage-to-git.html\n\n> The problem with r5256 is quite nasty and I can't think of a good\n> automated solution right now involving --stdlayout/branches/tags\n>\n> ------------------------------------------------------------------------\n> r5256 | theory | 2004-05-09 19:17:49 -0700 (Sun, 09 May 2004) | 2  \n> lines\n> Changed paths:\n>   A /bricolage/branches/rev_1_8 (from /bricolage/branches/ \n> rev_1_8_temp/bricolage:5255)\n>   D /bricolage/branches/rev_1_8_temp/bricolage\n>\n> Permanent home.\n>\n> ------------------------------------------------------------------------\n>\n> The problem is that the \"bricolage\" subdirectory became the top-level\n> tree and git-svn doesn't have a way of detecting that.  This is\n> occasionally a problem with other repos, too\n\nWe moved shit around a *lot*. There were two times we moved things  \naround: First, when Bricolage was first imported from CVS, it assumed  \nthat the root directory was the project directory, even though we had  \nseveral projects. So we had\n\n/trunk/\n/branches/\n/tags/\n\nWe spent several hundred commits moving things around so that we would  \nhave the more standard:\n\n/bricolage/trunk/\n/bricolage/branches/\n/bricolage/tags/\n\nFortunately, we did all of this moving before we committed anything  \nuseful to Subversion. So for this project, I first converted the old  \nSourceForge CVS repository to Git, then converted the Subversion  \nrepository starting from after all this moving around (r5517, well  \nafter the problematic commit), and then I joined them together, as  \ndetailed in my blog post.\n\n> Overall, this repo is very nasty given the amount of times follow- \n> parent\n> needs to be used (refs with a \"@<revno>\" suffix).  The --stdlayout\n> switch is really for the common repositories with a consistent depth  \n> for\n> branches/tags.  Unfortunately, SVN is way too freeform in this regard\n> and mixed-depth branches/tags hierarchies have always been a  \n> problem :<\n\nTell me about it. This is why it took 30 hours before `git-svn` failed.\n\nThe other time we moved stuff around was to reorganize tags into  \nsubdirectories. This was because we had so many tags that they were  \nunwieldy as a directory listing in SVN. This turned out to be a PITA  \nwhen migrating, but I was able to [work around it] using GitX and some  \npretty hacky code to generate grafts. It'd be nice if there was a way  \nto tell git-svn how deep a hierarchy to look for for tags (and perhaps  \nbranches), although it wouldn't have helped us, because we *changed*  \nthat hierarchy.\n\n[work around it]: http://justatheory.com/computers/vcs/git/bricolage-svn-to-git.html\n\nI'm so glad to have it all in Git now where things are far more  \nrationally organized.\n\n> It might be a bit easier to write (or script) the \"fetch\" lines\n> (like the one --stdlayout generates for trunk) for each tag/branch\n> and maybe use --no-follow-parent.\n\n--no-follow-parent was indeed key for me being able to get this done.  \nThanks for writing such a capable client that, although it couldn't  \nreconstruct what we were thinking when we moved things around, it let  \nme tell it where to stop and what stuff to ignore (ultimately, I had  \nit ignore all tag directories) so that I could get the job done.\n\nThe new Git repository is now on [GitHub], if you're curious.\n\n[GitHub]: http://github.com/bricoleurs/bricolage/\n\nThanks,\n\nDavid\n"},{"id":"112338","messageId":"m31vrfq11w.fsf@localhost.localdomain","threadId":"18850","inReplyTo":"81EFD289-5E46-4B27-8DA4-C2039915CE2D@kineticode.com","subject":"Re: Again with git-svn: File was not found in commit","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2009-04-26T08:17:28Z","receivedAt":"2009-04-26T08:17:28Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"\"David E. Wheeler\" <david@kineticode.com> writes:\n\n> On Apr 25, 2009, at 6:53 PM, Eric Wong wrote:\n> \n> > Hopefully the workaround is working out for you.\n> \n> [Finally], yes.\n> \n> [Finally]: http://justatheory.com/computers/vcs/git/bricolage-to-git.html\n\nThank you for posting this detailed analysis.\n\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"112352","messageId":"30DE35DA-2D44-43C9-B6B9-E4DEDC3D8F6C@kineticode.com","threadId":"18850","inReplyTo":"m31vrfq11w.fsf@localhost.localdomain","subject":"Re: Again with git-svn: File was not found in commit","fromName":"David E. Wheeler","fromEmail":"david@kineticode.com","sentAt":"2009-04-27T00:27:05Z","receivedAt":"2009-04-27T00:27:05Z","isPatch":false,"sender":{"key":"david@kineticode.com","avatar":"https://gravatar.com/avatar/dde6538c64ea1f06f00d4b3fb0770f12765288fcd4f63a91752aa9c2a8ef54bd?d=mp&s=160"},"body":"On Apr 26, 2009, at 1:17 AM, Jakub Narebski wrote:\n\n>> [Finally]: http://justatheory.com/computers/vcs/git/bricolage-to-git.html\n>\n> Thank you for posting this detailed analysis.\n\nMy pleasure; hopefully someone will get something out of it to help  \nwith *their* migration. I'll likely publish some final notes and the  \nscripts I wrote sometime this week.\n\nBest,\n\nDavid\n"},{"id":"112505","messageId":"m3ws95nml5.fsf@localhost.localdomain","threadId":"18850","inReplyTo":"30DE35DA-2D44-43C9-B6B9-E4DEDC3D8F6C@kineticode.com","subject":"Re: Again with git-svn: File was not found in commit","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2009-04-28T09:40:49Z","receivedAt":"2009-04-28T09:40:49Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"\"David E. Wheeler\" <david@kineticode.com> writes:\n\n> On Apr 26, 2009, at 1:17 AM, Jakub Narebski wrote:\n> \n>>> [Finally]: http://justatheory.com/computers/vcs/git/bricolage-to-git.html\n>>\n>> Thank you for posting this detailed analysis.\n> \n> My pleasure; hopefully someone will get something out of it to help\n> with *their* migration. I'll likely publish some final notes and the\n> scripts I wrote sometime this week.\n\nBTW the above story was mentioned in \"Perlbuzz news roundup 2009-04-27\"\nhttp://perlbuzz.com/2009/04/perlbuzz-news-roundup-2009-04-27.html\n\nP.S. Any relation to David A. Wheeler (http://www.dwheeler.com/blog)?\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"112542","messageId":"2A4DD157-32A4-4515-BC4D-0790714A512A@kineticode.com","threadId":"18850","inReplyTo":"m3ws95nml5.fsf@localhost.localdomain","subject":"Re: Again with git-svn: File was not found in commit","fromName":"David E. Wheeler","fromEmail":"david@kineticode.com","sentAt":"2009-04-28T16:15:38Z","receivedAt":"2009-04-28T16:15:38Z","isPatch":false,"sender":{"key":"david@kineticode.com","avatar":"https://gravatar.com/avatar/dde6538c64ea1f06f00d4b3fb0770f12765288fcd4f63a91752aa9c2a8ef54bd?d=mp&s=160"},"body":"On Apr 28, 2009, at 2:40 AM, Jakub Narebski wrote:\n\n> BTW the above story was mentioned in \"Perlbuzz news roundup  \n> 2009-04-27\"\n> http://perlbuzz.com/2009/04/perlbuzz-news-roundup-2009-04-27.html\n>\n> P.S. Any relation to David A. Wheeler (http://www.dwheeler.com/blog)?\n\nNo, just my doppelgänger. :-)\n\nBest,\n\nDavid"}]}