Re: Trying to sync two svn repositories with git-svn (repost)
From: Josef Wolf <hidden>
Date: 2016-06-15 22:46:42
On Mon, May 04, 2009 at 11:58:20AM -0400, Avery Pennarun wrote:
On Sat, May 2, 2009 at 5:58 PM, Josef Wolf [off-list ref] wrote:quoted
Somehow, I still can't get it work. This is what I do:[...]quoted
# 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-1Note 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.