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
List information: http://vger.kernel.org/majordomo-info.html
* 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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).