On Tue, 2007-06-12 at 01:39 -0700, Eric Wong wrote:
Junio C Hamano [off-list ref] wrote:
quoted
Eric Wong [off-list ref] writes:
quoted
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