Dear Michael,
I tried to run the script in my repo. However, seems like the 'git
merge $other_parents' process fails. In the script output I see some
lines saying that files were not able to be merged, ie:
warning: Cannot merge binary files:
scienceportal/images/tabs/tabs-gray.png (HEAD vs.
84f6fc283861aa7c5798f58769789dd0b91a5e9d)
warning: Cannot merge binary files: scienceportal/images/waiting.gif
(HEAD vs. e033cbbf1e9d24b66cb55a04701c059dc945c1c3)
Do you have some suggestion?
Thanks,
Patricia
On Mon, 01 Aug 2011 01:07:33 -0000, Michael Witten <mfwitten@xxxxxxxxx>
wrote:
Michael Witten wrote:
On Sun, 31 Jul 2011 18:44:43 -0300, Ricky, Egeland wrote:
On Jul 31, 2011, at 6:33 PM, Michael Witten wrote:
On Sun, Jul 31, 2011 at 20:21, Michael Witten <mfwitten@xxxxxxxxx>
wrote:
Why are there conflicts anyway?
Oh...
I guess there were conflicts when the merge commit was made in
the original repository, and these conflicts were resolved by
the merge commit itself. Hence, when rebase tries to split up
a merge by dealing with just the non-merge parents, you end up
having to deal with the conflict again.
Yes, I thought it was something like this going on, too. In the
pre-rebase history, when there is a commit with "Conflict:" and
listing file which is in the sub-repository history, this is a
point where rebase stops with a conflict.
Shouldn't rebase take this into account?
Not sure. Seems that it does not, it makes me resolve the conflict
=
again.
I think git rebase should take this into account is what I'm saying.
The following implements what I think `git rebase' should be doing;
run it instead of `git rebase' in your repo:
git branch saved
git rev-list HEAD --reverse --first-parent --parents |
{
read root
git reset --hard $root
rebase_head=$root
while read commit first_parent other_parents; do
if [ -z "$other_parents" ]; then
git cherry-pick $commit
rebase_head=$commit
else
for parent in $other_parents; do
if ! git cherry-pick $parent; then
git reset --hard $rebase_head
git merge $other_parents
git rm -rf .
git checkout -- $commit
git commit -aC $commit
break
fi
done
rebase_head=$(git rev-parse HEAD)
fi
done
}
Woops!
This line:
git checkout -- $commit
should be:
git checkout $commit -- .
--
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