On Tue, 2007-06-12 at 01:39 -0700, Eric Wong wrote: > Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Eric Wong <normalperson@xxxxxxxx> writes: > > > > > If dcommit detects a merge commit when doing rev-list When looking at > > > commit objects, is it safe to assume that the first parent is always the > > > "mainline" and that parents after it are the ones to merge from? > > > > > > So if I saw: > > > > > > commit $X > > > parent $A > > > parent $B > > > > > > I'd basically do: > > > reset --hard $A > > > merge --squash $B > > > > > > And resulting in $C which would have the same tree as $X, > > > then, when dcommit-ting, $D would be created with two parents: > > > $D~1 (svn), $B (git), but not $A > > > > I am not sure what you mean by "mainline", but I assume that you > > mean "SVN is the main and we are tracking it while taking > > advantage of more efficient and merge-capable git in guerrilla > > fashion". Because the tip of the current branch is what the > > user is pushing back to SVN via dcommit, I would say it is safe > > to assume that the first parent of such a merge is the line that > > corresponds to the SVN branch you are keeping track. > > Yes, "mainline" meaning the history that would be committed to SVN if > history were linear. > > I've gotten the following patch working for Joakim's second test script > (with dcommit before merge). However, without the dcommit before merge > in the first test script, git-svn has trouble figuring out which history > to follow. It'll take more work to figure out what to do in this > situation, and how to deal with more complex history... > > Subject: git-svn: Allow dcommit to handle certain single-parent merge commits > > This only works if a merge is the first commit to be committed > in a chain of commits. [SNIP patch] Nice!, now I get to keep the merge between the "svn" and the "merge" branch. The parents are swapped though: before last dcommit: Parent: b31cef1d3c6655441854ea8649359f0fc27f3e87 (friend) Parent: ed95b698c2e3336d387fed3763b213b3b90ebf4e (add some stuff) Branch: svn Follows: Precedes: Merge branch 'merge' into svn after dcommit: Parent: ed95b698c2e3336d387fed3763b213b3b90ebf4e (add some stuff) Parent: b31cef1d3c6655441854ea8649359f0fc27f3e87 (friend) Branches: svn, remotes/trunk Follows: Precedes: Merge branch 'merge' into svn git-svn-id: file:////usr/local/src/tst-git-svn/mysvnrepo/trunk@3 1585b9b0-b13 .... Will this also work for merging stuff from latest u-boot? I am doing dev. on my own u-boot branch and from time to time I want to merge in the latest from WD tree, then dcommit that merge. Later I want repeat that cycle. I have a SVN repo with my changes in it and I have grafted the beginning of that tree into a clone of WDs tree. Jocke - 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