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
next prev parent 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