git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Converting to Git using svn-fe (Was: Speeding up the initial git-svn fetch)

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Oct 21, 2010, 16:16 UTC
Message-ID
<20101021161629.GB3732@burratino>
In-Reply-To
<201010211752.59514.jnareb@gmail.com>
Jakub Narebski wrote:
Show 6 quoted lines
> The major problem is that svn:log etc. are _unversioned_ properties (see
> http://svnbook.red-bean.com/en/1.5/svn.ref.properties.html), so I am not
> sure if there is a way for Subversion server to tell that some svn:log
> properties changed.  Perhaps there is a log, even if properties are
> unversioned... otherwise we would have to detect somehow that properties
> changed.

There has been brief discussion of that possibility on the Subversion list [1]:

 "What we might need is an RA call that has
  the server provide the N last revisions to have undergone revprop edits..."

I'm guessing that there is not such a log now but the developers might be open to a patch adding such a log (for the sake of svnsync and similar use cases, like this one).

Show 9 quoted lines
> Later we fetch again from SVN repository, and besides new revisions to
> be converted we notice somehow that svn:log property for revision 'n'
> changed from A to B.
> 
> We now create replacement commit BB in Git, with the same Git parent
> as commit AA, and with commit message changed to BB.  Then we add
> commit BB as replacement for AA:
> 
>   $ git replace -f AA BB

Yes, exactly. In some cases, this "git replace" step would have to be accomplished by a separate command (or even "by hand") to get the job done:

 alice> git clone svn://svn.example.com/
 upstream> svnadmin propedit ...
 bob> git clone svn://svn.example.com/

In this situation, alice and bob have diverging histories, just as if upstream had rewritten history (because, well, upstream has).

Now if alice fetches from bob and notices that, then she must do
 alice> git replace AA BB

(or its user-friendly equivalent, or a batch equivalent to search for and handle cases like this).

[...]
Show 5 quoted lines
> If changes to unversioned revision properties are rare, then replacement
> technique is much superior to using notes, which generates unnatural git
> repository.  When changing commit messages (svn:log) and the like are 
> common and often, which would result in great many replacements, the
> notes technique could be better because of performance reasons.

Exactly. Well, one can mitigate the performance problems by running "git filter-branch" every once in a while. :)

Regards, Jonathan

[1] http://thread.gmane.org/gmane.comp.version-control.subversion.devel/122840/focus=122944
Previous: Jakub NarebskiNext: Ramkumar Ramachandra
Message 49 of 52 in “Speeding up the initial git-svn fetch”
  1. Matt StumpOct 13, 2010
  2. Stephen BashOct 13, 2010
  3. Matt StumpOct 13, 2010
  4. Stephen BashOct 13, 2010
  5. Converting to Git using svn-fe (Was: Speeding up the initial git-svn fetch)Stephen Bash, Oct 14, 2010
  6. Jonathan NiederOct 14, 2010
  7. Sverre RabbelierOct 14, 2010
  8. Stephen BashOct 15, 2010
  9. Sverre RabbelierOct 15, 2010
  10. Stephen BashOct 16, 2010
  11. Sverre RabbelierOct 17, 2010
  12. David Michael BarrOct 17, 2010
  13. Ramkumar RamachandraOct 18, 2010
  14. Jonathan NiederOct 18, 2010
  15. Ramkumar RamachandraOct 18, 2010
  16. Sverre RabbelierOct 18, 2010
  17. Jonathan NiederOct 18, 2010
  18. Ramkumar RamachandraOct 18, 2010
  19. Sverre RabbelierOct 18, 2010
  20. Jonathan NiederOct 18, 2010
  21. Sverre RabbelierOct 18, 2010
  22. Jonathan NiederOct 18, 2010
  23. Sverre RabbelierOct 18, 2010
  24. Jonathan NiederOct 18, 2010
  25. Sverre RabbelierOct 18, 2010
  26. Jonathan NiederOct 18, 2010
  27. Ramkumar RamachandraOct 19, 2010
  28. Stephen BashOct 19, 2010
  29. Stephen BashOct 19, 2010
  30. Ramkumar RamachandraOct 19, 2010
  31. Stephen BashOct 19, 2010
  32. David Michael BarrOct 19, 2010
  33. Stephen BashOct 19, 2010
  34. Will PalmerOct 20, 2010
  35. Jakub NarebskiOct 20, 2010
  36. Will PalmerOct 20, 2010
  37. Jakub NarebskiOct 20, 2010
  38. mrevilgnomeOct 21, 2010
  39. Jakub NarebskiOct 21, 2010
  40. Stephen BashOct 21, 2010
  41. Will PalmerOct 21, 2010
  42. Stephen BashOct 21, 2010
  43. Jakub NarebskiOct 21, 2010
  44. Stephen BashOct 21, 2010
  45. Jakub NarebskiOct 21, 2010
  46. Stephen BashOct 21, 2010
  47. Jakub NarebskiOct 22, 2010
  48. Jakub NarebskiOct 21, 2010
  49. Jonathan NiederOct 21, 2010
  50. Ramkumar RamachandraOct 20, 2010
  51. Stephen BashOct 20, 2010
  52. Ramkumar RamachandraOct 20, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.