public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Theodore Ts'o <tytso@mit•edu>
To: Junio C Hamano <junkio@cox•net>
Cc: git@vger•kernel.org, Theodore Ts'o <tytso@mit•edu>
Subject: [PATCH] mergetool: factor out common code
Date: Thu, 29 Mar 2007 11:44:20 -0400	[thread overview]
Message-ID: <11751830654112-git-send-email-tytso@mit.edu> (raw)
In-Reply-To: <11751830651361-git-send-email-tytso@mit.edu>

Create common function check_unchanged(), save_backup() and
remove_backup().

Also fix some minor whitespace issues while we're at it.

Signed-off-by: "Theodore Ts'o" <tytso@mit•edu>
---
 git-mergetool.sh |   80 +++++++++++++++++++++++++-----------------------------
 1 files changed, 37 insertions(+), 43 deletions(-)

diff --git a/git-mergetool.sh b/git-mergetool.sh
index 8a87f5e..aeb32ef 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -46,7 +46,7 @@ describe_file () {
 
     printf "    "
     if test -z "$mode"; then
-	printf  "'$path' was deleted"
+	printf "'$path' was deleted"
     elif is_symlink "$mode" ; then
 	printf "'$path' is a symlink containing '"
 	cat "$file"
@@ -108,12 +108,40 @@ resolve_deleted_merge () {
 	done
 }
 
+check_unchanged () {
+    if test "$path" -nt "$BACKUP" ; then
+	status=0;
+    else
+	while true; do
+	    echo "$path seems unchanged."
+	    printf "Was the merge successful? [y/n] "
+	    read answer < /dev/tty
+	    case "$answer" in
+		y*|Y*) status=0; break ;;
+		n*|N*) status=1; break ;;
+	    esac
+	done
+    fi
+}
+
+save_backup () {
+    if test "$status" -eq 0; then
+	mv -- "$BACKUP" "$path.orig"
+    fi
+}
+
+remove_backup () {
+    if test "$status" -eq 0; then
+	rm "$BACKUP"
+    fi
+}
+
 merge_file () {
     path="$1"
 
     f=`git-ls-files -u -- "$path"`
     if test -z "$f" ; then
-        if test ! -f "$path" ; then
+	if test ! -f "$path" ; then
 	    echo "$path: file not found"
 	else
 	    echo "$path: file does not need merging"
@@ -169,9 +197,7 @@ merge_file () {
 		    -o "$path" -- "$LOCAL" "$REMOTE" > /dev/null 2>&1)
 	    fi
 	    status=$?
-	    if test "$status" -eq 0; then
-		rm "$BACKUP"
-	    fi
+	    remove_backup
 	    ;;
 	tkdiff)
 	    if base_present ; then
@@ -180,29 +206,13 @@ merge_file () {
 		tkdiff -o "$path" -- "$LOCAL" "$REMOTE"
 	    fi
 	    status=$?
-	    if test "$status" -eq 0; then
-		mv -- "$BACKUP" "$path.orig"
-	    fi
+	    save_backup
 	    ;;
 	meld|vimdiff)
 	    touch "$BACKUP"
 	    $merge_tool -- "$LOCAL" "$path" "$REMOTE"
-	    if test "$path" -nt "$BACKUP" ; then
-		status=0;
-	    else
-		while true; do
-		    echo "$path seems unchanged."
-		    printf "Was the merge successful? [y/n] "
-		    read answer < /dev/tty
-		    case "$answer" in
-			y*|Y*) status=0; break ;;
-			n*|N*) status=1; break ;;
-		    esac
-		done
-	    fi
-	    if test "$status" -eq 0; then
-		mv -- "$BACKUP" "$path.orig"
-	    fi
+	    check_unchanged
+	    save_backup
 	    ;;
 	xxdiff)
 	    touch "$BACKUP"
@@ -219,22 +229,8 @@ merge_file () {
 		    -R 'Accel.SearchForward: "Ctrl-G"' \
 		    --merged-file "$path" -- "$LOCAL" "$REMOTE"
 	    fi
-	    if test "$path" -nt "$BACKUP" ; then
-		status=0;
-	    else
-		while true; do
-		    echo "$path seems unchanged."
-		    printf "Was the merge successful? [y/n] "
-		    read answer < /dev/tty
-		    case "$answer" in
-			y*|Y*) status=0; break ;;
-			n*|N*) status=1; break ;;
-		    esac
-		done
-	    fi
-	    if test "$status" -eq 0; then
-		mv -- "$BACKUP" "$path.orig"
-	    fi
+	    check_unchanged
+	    save_backup
 	    ;;
 	emerge)
 	    if base_present ; then
@@ -243,9 +239,7 @@ merge_file () {
 		emacs -f emerge-files-command "$LOCAL" "$REMOTE" "$path"
 	    fi
 	    status=$?
-	    if test "$status" -eq 0; then
-		mv -- "$BACKUP" "$path.orig"
-	    fi
+	    save_backup
 	    ;;
     esac
     if test "$status" -ne 0; then
-- 
1.5.1.rc2.1.g8afe-dirty

  reply	other threads:[~2007-03-29 15:45 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-29 15:44 [GIT PULL] git mergetool fixes Theodore Ts'o
2007-03-29 15:44 ` [PATCH] Fix minor formatting issue in man page for git-mergetool Theodore Ts'o
2007-03-29 15:44   ` [PATCH] mergetool: Replace use of "echo -n" with printf(3) to be more portable Theodore Ts'o
2007-03-29 15:44     ` [PATCH] mergetool: Don't error out in the merge case where the local file is deleted Theodore Ts'o
2007-03-29 15:44       ` [PATCH] mergetool: portability fix: don't assume true is in /bin Theodore Ts'o
2007-03-29 15:44         ` [PATCH] mergetool: portability fix: don't use reserved word function Theodore Ts'o
2007-03-29 15:44           ` Theodore Ts'o [this message]
2007-03-29 15:44             ` [PATCH] mergetool: Remove spurious error message if merge.tool config option not set Theodore Ts'o
2007-03-29 15:44               ` [PATCH] mergetool: Fix abort command when resolving symlinks and deleted files Theodore Ts'o
2007-03-29 15:44                 ` [PATCH] mergetool: Add support for Apple Mac OS X's opendiff command Theodore Ts'o
2007-03-29 15:44                   ` [PATCH] mergetool: Make git-rm quiet when resolving a deleted file conflict Theodore Ts'o
2007-03-29 15:44                     ` [PATCH] mergetool: Clean up description of files and prompts for merge resolutions Theodore Ts'o
2007-03-29 22:29                       ` Matthias Lederhofer
2007-03-30  2:54                         ` Theodore Tso
2007-03-30 14:46                           ` Randal L. Schwartz
2007-03-29 15:57     ` [PATCH] mergetool: Replace use of "echo -n" with printf(3) to be more portable Matthias Lederhofer
2007-03-29 17:09       ` Theodore Tso
2007-03-29 22:02         ` Junio C Hamano
2007-03-29 22:15           ` Theodore Tso

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=11751830654112-git-send-email-tytso@mit.edu \
    --to=tytso@mit$(echo .)edu \
    --cc=git@vger$(echo .)kernel.org \
    --cc=junkio@cox$(echo .)net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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