How to manage this workflow? (reloaded)
- From
- Josef Wolf <jw@raven.inka.de>
- Date
- Apr 24, 2009, 07:59 UTC
- Message-ID
- <20090424075915.GB15420@raven.wolf.lan>
Hello,
I have two subversion repositories which I would like to synchronize via git-svn. For this, I have set up a git repository and configured two branches to track the subversion repositories via git-svn:
mkdir test-sync
cd test-sync
git svn init --stdlayout file://$REPOSDIR/svn-first for repos in svn-first svn-second; do
git config svn-remote.$repos.url file://$REPOSDIR/$repos
git config svn-remote.$repos.fetch trunk:refs/remotes/$repos/trunk
git config svn-remote.$repos.branches branches/*:refs/remotes/$repos/*
git config svn-remote.$repos.tags tags/*:refs/remotes/$repos/tags/*
git svn fetch -R $repos
git checkout -b $repos $repos/trunk
done
git gcThis gives me two remote and two local branches:
master
svn-first
* svn-second
svn-first/trunk
svn-second/trunkAs a first step, I tried to "mirror" the manual "merges" that were done between the subversion repositories in the past:
git checkout svn-first
git cherry-pick svn-second-sha1 .... # repeat as needed git checkout svn-second
git cherry-pick svn-first-sha1 .... # repeat as neededSo I've spent almost 4 weeks to cherry-pick and resolve all the conflicts. Looks good so far, since
git diff svn-first svn-second
git diff svn-first/trunk svn-first/trunk
git diff svn-second/trunk svn-second/trunkgive me the desired outputs. Now I do
git checkout svn-first
git merge -s ours svn-second
git checkout svn-second
git merge -s ours svn-firstto tell git that the branches are in sync.
But now, when I try to
git checkout svn-second
git svn rebaseI get lots of conflicts. When I inspect the .git/rebase-apply directory and the conflicts, it looks like "git svn rebase" tries to re-apply all the commits from svn-first. When I omit the "git merge -s ours svn-first" command, it does not re-apply those commits. So it looks like the "git merge -s ours" wipes some information that git-svn needs to know what was already merged.
What am I missing? I thought the "ours" strategy is meant to tell git that everything from that branch was merged, either manually or by cherry-pick.
Any hints how to track this down?
BTW: this is git version 1.6.0.2