From: "Neal Kreitzinger" <neal@rsss.com>
To: git@vger.kernel.org
Subject: 4-way diff (base,ours,theirs,merged) to review merge results
Date: Sat, 25 Feb 2012 21:55:37 -0600 [thread overview]
Message-ID: <jicafn$gnj$1@dough.gmane.org> (raw)
Combined diff only tells you what the merge result auto-resolved (with
rerere turned off and no merge-conflicts) in comparison to "ours" and
"theirs". That only tells you what "ours" and "theirs" *had*, not what they
*did* (or were trying to do). You need the merge-base version to see what
"ours" and "theirs" did. Seeing what "ours" and "theirs" did will
much-better tell you if "merged" did-the-right-thing or not. What is the
best way to display a 4-way diff of merge-base, "ours", "theirs", and
"merged" after a merge completes so you can review the "merged" results for
correctness?
Before I try writing a script to dump the object-contents of the merge-base,
"ours", "theirs", and "merged" versions of the-file-in-question to
work-files and then feed them to a 4-way diff for review, I would like to
see if someone already has a script or better-idea for this, or if git has
something more straight-forward that already does-this-for-you.
Reason for this:
If "ours" has line-x and "theirs" does not have line-x, and "merged" does
have line-x you still have a mystery on your hands:
(Combined diff)
ours: has line-x
theirs (master): does not have line-x
merged: has line-x
merge-base (older master): *may-or-may-not* have line-x
conclusion: I'm not very sure if "merged" should have line-x or not...
Based on the combined-diff only, I don't know if "merged" should have line-x
or not because I don't know if "ours" *added* line-x to the merge-base or if
"theirs" *removed* line-x from the merge-base. IOW, if "theirs" is master
and "ours" is way-behind master then I pretty-much know I probably need to
take "theirs" because it has the latest-stuff. However, I don't know if
"theirs" took line-x out of master (and "ours" just has line-x because its
old), or if line-x was never in master and "ours" really-needed to add it.
Having merge-base context allows for more accurate conclusions like this:
ours: has line-x
theirs (master): does not have line-x
merged: has line-x
merge-base (older master): has line-x
conclusion: I should probably take line-x out of "merged"
ours: has line-x
theirs (master): does not have line-x
merged: has line-x
merge-base: does not have line-x
conclusion: I should probably keep line-x in "merged"
Thanks in advance for you feedback.
v/r,
neal
next reply other threads:[~2012-02-26 3:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-26 3:55 Neal Kreitzinger [this message]
2012-02-26 8:12 ` 4-way diff (base,ours,theirs,merged) to review merge results Junio C Hamano
2012-02-26 9:05 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='jicafn$gnj$1@dough.gmane.org' \
--to=neal@rsss.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.