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

Re: Trying to sync two svn repositories with git-svn (repost)

From
Avery Pennarun <apenwarr@gmail.com>
Date
May 14, 2009, 21:57 UTC
Message-ID
<32541b130905141457u196e1a68w8250489b88eb83c4@mail.gmail.com>
In-Reply-To
<20090514214120.GR15420@raven.wolf.lan>
On Thu, May 14, 2009 at 5:41 PM, Josef Wolf <jw@raven.inka.de> wrote:
Show 7 quoted lines
> On Thu, May 14, 2009 at 02:35:18AM -0400, Avery Pennarun wrote:
>> No criss-cross merges, no insanity, no question about whether it's correct.
>
> Indeed, this looks pretty simple.  But AFAICS, this works only when
> starting out with a virgin repository.  In my situation, public is
> currently empty and have to be constructed from scratch by picking
> from the privates.

Not exactly; you simply produce a "public" repository however you want to produce it. One easy way would be to copy one of the existing svn branches, cherry pick and revert whatever commits you want, and call it public. The prior history of that branch doesn't matter to the algorithm.

Show 7 quoted lines
> So here's my second plan:
> 1. instead of doing the cherry-picking in a single repository, it might
>   be helpful to do it in separate repositories: one repository for each
>   direction.  While there are still two remote svn repositories in each
>   svn repository, there is no need for criss-cross anymore.  The flow
>   of the data is in one direction and it seems (at least at first glance)
>   I can use git-svn-rebase to get a linear history.

it's still criss-crossing, it's just less obvious that way. One repository is exactly the same as two repositories in git; all that matters is the branch histories. So if you think this will fix it, you're probably missing something :)

> 2. After the synchronization is done, I would merge the two repositories
>   into a third one to create the public repository.  Since this will be
>   a pure git environment, I hope that the problems that are caused svn's
>   lack of merge support will vanish.

I'd say that basically none of your problems have anything to do with svn's lack of merge support, and everything to do with the fact that you aren't doing all your changes first on a 'public' branch and then merging from there into the private branches. (That's really not so hard to do in svn either, and would save a ton of confusion.)

> At first glance, this seems to work.  But there's the drawback that I
> have to keep track of what have been merged manually.  So there's
> certainly room for improvement :)
Right, the crossmerge() function in the script I sent is designed to avoid that.
Show 6 quoted lines
> I will have to play a little bit with this script to get a better
> understanding how it works.  But from the description, I got the
> impression that it matches my (current) work flow pretty good:
> Currently, initial changes are done in some private repository and
> propagated to the other repositories from there.  The only exception
> is that currently, there's no such thing as a "public" repository.

The public repository is nothing special and doesn't require any work from you; it's simply maintained automatically from the private branches. (Of course, if you start doing all your changes in the public repository, life gets a little simpler.)

Have fun,
Avery
Previous: Josef WolfNext: Josef Wolf
Message 27 of 31 in “Trying to sync two svn repositories with git-svn (repost)”
  1. Josef WolfApr 27, 2009
  2. Josef WolfApr 28, 2009
  3. Avery PennarunApr 28, 2009
  4. Josef WolfApr 28, 2009
  5. Avery PennarunApr 29, 2009
  6. Josef WolfApr 29, 2009
  7. Avery PennarunApr 29, 2009
  8. Josef WolfApr 29, 2009
  9. Avery PennarunApr 30, 2009
  10. Josef WolfApr 30, 2009
  11. Avery PennarunApr 30, 2009
  12. Josef WolfMay 1, 2009
  13. Avery PennarunMay 1, 2009
  14. Josef WolfMay 2, 2009
  15. Avery PennarunMay 4, 2009
  16. Josef WolfMay 4, 2009
  17. Josef WolfMay 6, 2009
  18. Avery PennarunMay 6, 2009
  19. Josef WolfMay 6, 2009
  20. Avery PennarunMay 8, 2009
  21. Josef WolfMay 8, 2009
  22. Josef WolfMay 13, 2009
  23. Avery PennarunMay 13, 2009
  24. Josef WolfMay 13, 2009
  25. Avery PennarunMay 14, 2009
  26. Josef WolfMay 14, 2009
  27. Avery PennarunMay 14, 2009
  28. Josef WolfMay 15, 2009
  29. Avery PennarunMay 15, 2009
  30. Josef WolfMay 17, 2009
  31. Josef WolfMay 20, 2009

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.