Re: [PATCH] Add git-mergetool to run an appropriate merge conflict resolution program

Subsystems: the rest

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH] Add git-mergetool to run an appropriate merge conflict resolution program

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:02

I had a chance to use git-mergetool in real life for the first
time today, when I merged 'maint' into 'master'.  It has a
symlink vs symlink conflict, so I got something like this:

================================================================
Merging the files: RelNotes

Symlink merge conflict for RelNotes:
    'RelNotes' is a symlink containing 'Documentation/RelNotes-1.5.1.txt' in the local branch
    'RelNotes' is a symlink containing 'Documentation/RelNotes-1.5.0.6.txt' in the remote branch
Use (r)emote or (l)ocal, or (a)bort?
================================================================

A few observations.

(1) Saying "a" <Return> does not let me exit.  It keeps asking
    the same question.

(2) The word "symlink" might be less geekish if worded "symbolic
    link".

(3) The message look very long, and repeats the same information.

(4) The status info gives local and then remote, but the choice
    is between remote and local.

The attached is a minimum fix for the above issues, but not for
immediate application, as I am sure the rewording would make
messages inconsistent with other cases.  The updated output
would look like this:

================================================================
Merging the files: RelNotes

Symbolic link merge conflict for 'RelNotes':
  local: a symbolic link -> 'Documentation/RelNotes-1.5.1.txt'
  remote: a symbolic link -> 'Documentation/RelNotes-1.5.0.6.txt'
Use (l)ocal or (r)emote, or (a)bort? l
================================================================

---
 git-mergetool.sh |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/git-mergetool.sh b/git-mergetool.sh
index 7942fd0..0b30133 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -44,27 +44,24 @@ function describe_file () {
     branch="$2"
     file="$3"
 
-    echo -n "    "
+    echo -n "  ${branch}: "
     if test -z "$mode"; then
-	echo -n "'$path' was deleted"
+	echo "deleted"
     elif is_symlink "$mode" ; then
-	echo -n "'$path' is a symlink containing '"
-	cat "$file"
-	echo -n "'"
+	echo "a symbolic link -> '$(cat "$file")'"
     else
 	if base_present; then
-	    echo -n "'$path' was created"
+	    echo "created"
 	else
-	    echo -n "'$path' was modified"
+	    echo "modified"
 	fi
     fi
-    echo " in the $branch branch"
 }
 
 
 resolve_symlink_merge () {
     while /bin/true; do
-	echo -n "Use (r)emote or (l)ocal, or (a)bort? "
+	echo -n "Use (l)ocal or (r)emote, or (a)bort? "
 	read ans
 	case "$ans" in
 	    [lL]*)
@@ -79,7 +76,7 @@ resolve_symlink_merge () {
 		cleanup_temp_files --save-backup
 		return
 		;;
-	    [qQ]*)
+	    [aAqQ]*)
 		exit 1
 		;;
 	    esac
@@ -147,7 +144,7 @@ merge_file () {
     fi
 
     if is_symlink "$local_mode" || is_symlink "$remote_mode"; then
-	echo "Symlink merge conflict for $path:"
+	echo "Symbolic link conflict for '$path':"
 	describe_file "$local_mode" "local" "$LOCAL"
 	describe_file "$remote_mode" "remote" "$REMOTE"
 	resolve_symlink_merge

Re: [PATCH] Add git-mergetool to run an appropriate merge conflict resolution program

From: Theodore Tso <tytso@mit.edu>
Date: 2016-06-15 22:43:02

On Wed, Mar 28, 2007 at 08:58:49PM -0700, Junio C Hamano wrote:
I had a chance to use git-mergetool in real life for the first
time today, when I merged 'maint' into 'master'.  It has a
symlink vs symlink conflict, so I got something like this:

A few observations.

(1) Saying "a" <Return> does not let me exit.  It keeps asking
    the same question.
Yeah, I fixed that last night, along with a bunch of other git
mergetool cleanups.  I was about to request you to do a pull when I
noticed your e-mail. 
(2) The word "symlink" might be less geekish if worded "symbolic
    link".

(3) The message look very long, and repeats the same information.

(4) The status info gives local and then remote, but the choice
    is between remote and local.

The attached is a minimum fix for the above issues, but not for
immediate application, as I am sure the rewording would make
messages inconsistent with other cases.  
OK, let me fix up the display and try to clean up the other messages.
I agree that your output looks much nicer.

						- Ted
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help