On Fri, May 01, 2009 at 03:17:14PM -0400, Avery Pennarun wrote: > On Fri, May 1, 2009 at 10:28 AM, Josef Wolf <jw@xxxxxxxxxxxxx> wrote: > > On Thu, Apr 30, 2009 at 06:59:50PM -0400, Avery Pennarun wrote: > >> "git log -1 first-svn" would give you the first cherry-pick. But > >> remember, it's a completely different branch. > > > > I can see why this happens, but I still find it confusing. Maybe I > > should help with the -m option? > > I don't know what -m does. Maybe try looking at the graph with gitk; > that might give some clues. Option -m lets me set the log message explicitly :) > >> Okay, if you want to end up with two different remote branches, it > >> makes sense to have two different local branches. > > > > Well, I _have_ two different remotes because I have two svn repositories. > > Right. I was just wondering whether you wanted the two branches' > contents to be *different* or identical. I guess different. They have to stay different, because they are localized. > > Then I have to keep both local branches. But I still wonder why you > > suggested to go with _one_ local branch. > > For my own purposes, I try not to create a 1:1 mapping between local > branches and remote branches; this just ends up being confusing, > because I can have commits in my local branch that aren't in the > remote one, and vice versa. So it's not very useful to create a local > branch *just* because I have a corresponding remote branch. > > In your case, you might want to have just a single local branch for > your "public" stuff. You would then merge changes from the two svn > remote branches into your local branch, and you'd also merge from your > local branch into your remote branches (using a disconnected HEAD and > svn dcommit). But I am working not only on the "public" stuff. Additionally, I am working on _multiple_ localized stuff. Thus, I have multiple remote repositories. Somehow, I still can't get it work. This is what I do: # create the repos # git svn init --stdlayout file:///var/tmp/builds/git-sync/svn/svn-1 git config merge.stat true # add configuration for svn-1 repos # git config svn-remote.svn-1.url file:///var/tmp/builds/git-sync/svn/svn-1 git config svn-remote.svn-1.fetch trunk:refs/remotes/svn-1/trunk git config svn-remote.svn-1.branches branches/*:refs/remotes/svn-1/* git config svn-remote.svn-1.tags tags/*:refs/remotes/svn-1/tags/* # add configuration for svn-2 repos # git config svn-remote.svn-2.url file:///var/tmp/builds/git-sync/svn/svn-2 git config svn-remote.svn-2.fetch trunk:refs/remotes/svn-2/trunk git config svn-remote.svn-2.branches branches/*:refs/remotes/svn-2/* git config svn-remote.svn-2.tags tags/*:refs/remotes/svn-2/tags/* # fetch the commits from svn repositories # git svn fetch -R svn-1 git svn fetch -R svn-2 # create local tracking branches # git checkout -b svn-1 svn-1/trunk git checkout -b svn-2 svn-2/trunk # just to see what we've done # git tag svn-1-orig svn-1 git tag svn-2-orig svn-2 # 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 # check what I have done # git diff svn-1-orig svn-1/trunk # shows what I expect # move the result to svn-1 # git checkout svn-1/trunk git merge --no-ff svn-1 git svn dcommit # move stuff from svn-1 to svn-2 # git svn fetch svn-1 git checkout svn-2 git cherry-pick -n c9dae [ continue cherry-picking ] git merge --no-ff -s ours svn-2 # check what I have done # git diff svn-2-orig svn-2/trunk # shows what I expect # move the result to svn-2 # git checkout svn-2/trunk git merge --no-ff svn-2 git svn dcommit At this point, we should be synchronized. git checkout svn-2/trunk git svn fetch svn-1 git merge --no-ff svn-1 BOOM. Although no new commits were fetched, we get a lot of conflicts here. So git is not fully aware about the fact that we are synchronized. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html