From: Josef Wolf Date: Mon, 04 May 2009 21:14:23 GMT Subject: Re: Trying to sync two svn repositories with git-svn (repost) Message-ID: <20090504211423.GK15420@raven.wolf.lan> In-Reply-To: <32541b130905040858v2a0b7a6br5b056a365fcb6855@mail.gmail.com> On Mon, May 04, 2009 at 11:58:20AM -0400, Avery Pennarun wrote: > On Sat, May 2, 2009 at 5:58 PM, Josef Wolf wrote: > > Somehow, I still can't get it work.  This is what I do: > [...] > >  # move stuff from svn-2 to svn-1 > >  # > >  git svn fetch svn-2 > >  git checkout svn-1 > >  git cherry-pick 05b964 > >  [  continue cherry-picking ] > >  git merge --no-ff -s ours svn-1 > > Note that you probably should be merging '-s ours svn-2' here, not > svn-1. svn-1 already contains svn-1 (of course) so that merge didn't > do anything. It most especially doesn't mark svn-1 as being > up-to-date with svn-2, and that's probably going to make trouble > later. Yeah, you're right. That was a typo. Fixing this, the "getting started" seems to work now: the cherry-picked commits end up in the svn repositories. But the synchronization after the "getting started" does not seem to work yet. Here's what I've done: git tag svn-1-orig svn-1 git tag svn-2-orig svn-2 # move cherries to svn-2 # git svn fetch svn-1 git checkout svn-2 git cherry-pick c9da [ ... ] git merge --no-ff -s ours svn-1 git checkout svn-2/trunk git merge --no-ff svn-2 git svn dcommit git diff svn-2-orig svn-2/trunk # check what I've done # move cherries to svn-1 # git svn fetch svn-2 git checkout svn-1 git cherry-pick 05b9 [ ... ] git merge --no-ff -s ours svn-2 git checkout svn-1/trunk git merge --no-ff svn-1 git svn dcommit git diff svn-1-orig svn-1/trunk # check what I've done git diff svn-1/trunk svn-2/trunk # shows the diffs I want to keep # now try a synchronization # git checkout svn-2/trunk git svn fetch svn-1 # nothing new was checked in yet git merge --no-ff svn-1 git svn dcommit Since no new commits were made in svn, those four commands should be almost a no-op. But Instead of merging only the changes that were done after the last synchronization, the last dcommit makes svn-2/trunk identical to svn-1. This effectively wipes all the differences which I would like to keep.