git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jonathan del Strother <jon.delStrother@bestbefore.tv>
Cc: git@vger.kernel.org, Charles Bailey <charles@hashpling.org>
Subject: Re: [PATCH] Offer to print changes while running git-mergetool
Date: Sat, 07 Feb 2009 00:11:06 -0800	[thread overview]
Message-ID: <7vr62ay8dh.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <1233930745-77930-1-git-send-email-jon.delStrother@bestbefore.tv> (Jonathan del Strother's message of "Fri, 6 Feb 2009 14:32:25 +0000")

Jonathan del Strother <jon.delStrother@bestbefore.tv> writes:

> Add a "Show changes" option to each prompt in mergetool. This prints the
> conflicted changes on the current file, using 'git log -p --merge
> <file>'

I think the patch should look like this, given the recent conversation I
had with you.  It seems that the script thinks the unit of indentation is
4-places, and case arms are indented from case/esac (neither of which is
the standard git shell script convention), and I tried to match that style
used in the existing code.

No, I didn't test it.

Charles volunteered to take over mergetool, so he is on the Cc: list.

 git-mergetool.sh |   60 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 47 insertions(+), 13 deletions(-)

diff --git c/git-mergetool.sh w/git-mergetool.sh
index 87fa88a..b8604d6 100755
--- c/git-mergetool.sh
+++ w/git-mergetool.sh
@@ -14,6 +14,13 @@ OPTIONS_SPEC=
 . git-sh-setup
 require_work_tree
 
+if test -f "$GIT_DIR/MERGE_HEAD"
+then
+    in_merge=t show_changes=", (s)how changes"
+else
+    in_merge=f show_changes=
+fi
+
 # Returns true if the mode reflects a symlink
 is_symlink () {
     test "$1" = 120000
@@ -62,22 +69,28 @@ describe_file () {
 
 resolve_symlink_merge () {
     while true; do
-	printf "Use (l)ocal or (r)emote, or (a)bort? "
+	printf "Use (l)ocal or (r)emote$show_changes, or (a)bort? "
 	read ans
-	case "$ans" in
-	    [lL]*)
+	case "$in_merge,$ans" in
+	    ?,[lL]*)
 		git checkout-index -f --stage=2 -- "$MERGED"
 		git add -- "$MERGED"
 		cleanup_temp_files --save-backup
 		return 0
 		;;
-	    [rR]*)
+	    ?,[rR]*)
 		git checkout-index -f --stage=3 -- "$MERGED"
 		git add -- "$MERGED"
 		cleanup_temp_files --save-backup
 		return 0
 		;;
-	    [aA]*)
+	    t,[sS]*)
+		git log -p --merge "$MERGED"
+		printf "\n"
+		resolve_symlink_merge
+		return
+		;;
+	    ?,[aA]*)
 		return 1
 		;;
 	    esac
@@ -87,23 +100,29 @@ resolve_symlink_merge () {
 resolve_deleted_merge () {
     while true; do
 	if base_present; then
-	    printf "Use (m)odified or (d)eleted file, or (a)bort? "
+	    printf "Use (m)odified or (d)eleted file$show_changes, or (a)bort? "
 	else
-	    printf "Use (c)reated or (d)eleted file, or (a)bort? "
+	    printf "Use (c)reated or (d)eleted file$show changes, or (a)bort? "
 	fi
 	read ans
-	case "$ans" in
-	    [mMcC]*)
+	case "$in_merge,$ans" in
+	    ?,[mMcC]*)
 		git add -- "$MERGED"
 		cleanup_temp_files --save-backup
 		return 0
 		;;
-	    [dD]*)
+	    ?,[dD]*)
 		git rm -- "$MERGED" > /dev/null
 		cleanup_temp_files
 		return 0
 		;;
-	    [aA]*)
+	    t,[sS]*)
+		git log -p --merge "$MERGED"
+		printf "\n"
+		resolve_deleted_merge
+		return
+		;;
+	    ?,[aA]*)
 		return 1
 		;;
 	    esac
@@ -184,8 +203,23 @@ merge_file () {
     describe_file "$local_mode" "local" "$LOCAL"
     describe_file "$remote_mode" "remote" "$REMOTE"
     if "$prompt" = true; then
-	printf "Hit return to start merge resolution tool (%s): " "$merge_tool"
-	read ans
+	while true; do
+	    case $in_merge in
+		t)	msg_head="(S)how changes, or h" ;;
+		f)	msg_head="H" ;;
+	    esac
+	    print "${msg_head}it return to start merge resolution tool (%s): " "$merge_tool"
+	    read ans
+	    case "$in_merge,$ans" in
+	        t,[sS]*)
+		    git log -p --merge "$MERGED"
+		    printf "\n"
+		    ;;
+		?,*)
+		    break
+		    ;;
+	    esac
+        done
     fi
 
     case "$merge_tool" in

  parent reply	other threads:[~2009-02-07  8:12 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-06 14:32 [PATCH] Offer to print changes while running git-mergetool Jonathan del Strother
2009-02-06 14:41 ` Jonathan del Strother
2009-02-06 17:47   ` Junio C Hamano
2009-02-06 19:08     ` Jonathan del Strother
2009-02-07  0:21       ` Junio C Hamano
2009-02-07  8:11 ` Junio C Hamano [this message]
2009-02-07 12:01   ` Jonathan del Strother
2009-02-08  1:24     ` Charles Bailey
2009-02-08 11:43       ` Jonathan del Strother
2009-02-08 12:38         ` Charles Bailey

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=7vr62ay8dh.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=charles@hashpling.org \
    --cc=git@vger.kernel.org \
    --cc=jon.delStrother@bestbefore.tv \
    /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 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 NNTP newsgroup(s).