mergetool: style fixes

This script is one of the sizeable ones that tempted people to copy
its "neibouring style" in their new code, but was littered with
styles incompatible with our style guide.

 - use one tab, not four spaces, per indent level;

 - long lines can be wrapped after '|', '&&', or '||' for
   readability.

 - structures like "if .. then .. else .. fi", "while .. do .. done"
   are split into lines in such a way that does not require
   unnecessary semicolon.

 - case, esac and case-arms align at the same column.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2012-08-22 22:33:15 -07:00 committed by Junio C Hamano
parent cd7c0be19f
commit f8750a0ea9

View File

@ -38,7 +38,8 @@ base_present () {
} }
cleanup_temp_files () { cleanup_temp_files () {
if test "$1" = --save-backup ; then if test "$1" = --save-backup
then
rm -rf -- "$MERGED.orig" rm -rf -- "$MERGED.orig"
test -e "$BACKUP" && mv -- "$BACKUP" "$MERGED.orig" test -e "$BACKUP" && mv -- "$BACKUP" "$MERGED.orig"
rm -f -- "$LOCAL" "$REMOTE" "$BASE" rm -f -- "$LOCAL" "$REMOTE" "$BASE"
@ -53,24 +54,26 @@ describe_file () {
file="$3" file="$3"
printf " {%s}: " "$branch" printf " {%s}: " "$branch"
if test -z "$mode"; then if test -z "$mode"
then
echo "deleted" echo "deleted"
elif is_symlink "$mode" ; then elif is_symlink "$mode"
then
echo "a symbolic link -> '$(cat "$file")'" echo "a symbolic link -> '$(cat "$file")'"
elif is_submodule "$mode" ; then elif is_submodule "$mode"
then
echo "submodule commit $file" echo "submodule commit $file"
else elif base_present
if base_present; then then
echo "modified file" echo "modified file"
else else
echo "created file" echo "created file"
fi fi
fi
} }
resolve_symlink_merge () { resolve_symlink_merge () {
while true; do while true
do
printf "Use (l)ocal or (r)emote, or (a)bort? " printf "Use (l)ocal or (r)emote, or (a)bort? "
read ans || return 1 read ans || return 1
case "$ans" in case "$ans" in
@ -94,8 +97,10 @@ resolve_symlink_merge () {
} }
resolve_deleted_merge () { resolve_deleted_merge () {
while true; do while true
if base_present; then do
if base_present
then
printf "Use (m)odified or (d)eleted file, or (a)bort? " printf "Use (m)odified or (d)eleted file, or (a)bort? "
else else
printf "Use (c)reated or (d)eleted file, or (a)bort? " printf "Use (c)reated or (d)eleted file, or (a)bort? "
@ -120,21 +125,26 @@ resolve_deleted_merge () {
} }
resolve_submodule_merge () { resolve_submodule_merge () {
while true; do while true
do
printf "Use (l)ocal or (r)emote, or (a)bort? " printf "Use (l)ocal or (r)emote, or (a)bort? "
read ans || return 1 read ans || return 1
case "$ans" in case "$ans" in
[lL]*) [lL]*)
if ! local_present; then if ! local_present
if test -n "$(git ls-tree HEAD -- "$MERGED")"; then then
if test -n "$(git ls-tree HEAD -- "$MERGED")"
then
# Local isn't present, but it's a subdirectory # Local isn't present, but it's a subdirectory
git ls-tree --full-name -r HEAD -- "$MERGED" | git update-index --index-info || exit $? git ls-tree --full-name -r HEAD -- "$MERGED" |
git update-index --index-info || exit $?
else else
test -e "$MERGED" && mv -- "$MERGED" "$BACKUP" test -e "$MERGED" && mv -- "$MERGED" "$BACKUP"
git update-index --force-remove "$MERGED" git update-index --force-remove "$MERGED"
cleanup_temp_files --save-backup cleanup_temp_files --save-backup
fi fi
elif is_submodule "$local_mode"; then elif is_submodule "$local_mode"
then
stage_submodule "$MERGED" "$local_sha1" stage_submodule "$MERGED" "$local_sha1"
else else
git checkout-index -f --stage=2 -- "$MERGED" git checkout-index -f --stage=2 -- "$MERGED"
@ -143,16 +153,22 @@ resolve_submodule_merge () {
return 0 return 0
;; ;;
[rR]*) [rR]*)
if ! remote_present; then if ! remote_present
if test -n "$(git ls-tree MERGE_HEAD -- "$MERGED")"; then then
if test -n "$(git ls-tree MERGE_HEAD -- "$MERGED")"
then
# Remote isn't present, but it's a subdirectory # Remote isn't present, but it's a subdirectory
git ls-tree --full-name -r MERGE_HEAD -- "$MERGED" | git update-index --index-info || exit $? git ls-tree --full-name -r MERGE_HEAD -- "$MERGED" |
git update-index --index-info || exit $?
else else
test -e "$MERGED" && mv -- "$MERGED" "$BACKUP" test -e "$MERGED" && mv -- "$MERGED" "$BACKUP"
git update-index --force-remove "$MERGED" git update-index --force-remove "$MERGED"
fi fi
elif is_submodule "$remote_mode"; then elif is_submodule "$remote_mode"
! is_submodule "$local_mode" && test -e "$MERGED" && mv -- "$MERGED" "$BACKUP" then
! is_submodule "$local_mode" &&
test -e "$MERGED" &&
mv -- "$MERGED" "$BACKUP"
stage_submodule "$MERGED" "$remote_sha1" stage_submodule "$MERGED" "$remote_sha1"
else else
test -e "$MERGED" && mv -- "$MERGED" "$BACKUP" test -e "$MERGED" && mv -- "$MERGED" "$BACKUP"
@ -172,11 +188,15 @@ resolve_submodule_merge () {
stage_submodule () { stage_submodule () {
path="$1" path="$1"
submodule_sha1="$2" submodule_sha1="$2"
mkdir -p "$path" || die "fatal: unable to create directory for module at $path" mkdir -p "$path" ||
die "fatal: unable to create directory for module at $path"
# Find $path relative to work tree # Find $path relative to work tree
work_tree_root=$(cd_to_toplevel && pwd) work_tree_root=$(cd_to_toplevel && pwd)
work_rel_path=$(cd "$path" && GIT_WORK_TREE="${work_tree_root}" git rev-parse --show-prefix) work_rel_path=$(cd "$path" &&
test -n "$work_rel_path" || die "fatal: unable to get path of module $path relative to work tree" GIT_WORK_TREE="${work_tree_root}" git rev-parse --show-prefix
)
test -n "$work_rel_path" ||
die "fatal: unable to get path of module $path relative to work tree"
git update-index --add --replace --cacheinfo 160000 "$submodule_sha1" "${work_rel_path%/}" || die git update-index --add --replace --cacheinfo 160000 "$submodule_sha1" "${work_rel_path%/}" || die
} }
@ -185,7 +205,8 @@ checkout_staged_file () {
"$(git checkout-index --temp --stage="$1" "$2" 2>/dev/null)" \ "$(git checkout-index --temp --stage="$1" "$2" 2>/dev/null)" \
: '\([^ ]*\) ') : '\([^ ]*\) ')
if test $? -eq 0 -a -n "$tmpfile" ; then if test $? -eq 0 -a -n "$tmpfile"
then
mv -- "$(git rev-parse --show-cdup)$tmpfile" "$3" mv -- "$(git rev-parse --show-cdup)$tmpfile" "$3"
else else
>"$3" >"$3"
@ -196,8 +217,10 @@ merge_file () {
MERGED="$1" MERGED="$1"
f=$(git ls-files -u -- "$MERGED") f=$(git ls-files -u -- "$MERGED")
if test -z "$f" ; then if test -z "$f"
if test ! -f "$MERGED" ; then then
if test ! -f "$MERGED"
then
echo "$MERGED: file not found" echo "$MERGED: file not found"
else else
echo "$MERGED: file does not need merging" echo "$MERGED: file does not need merging"
@ -215,7 +238,8 @@ merge_file () {
local_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $1;}') local_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $1;}')
remote_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==3) print $1;}') remote_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==3) print $1;}')
if is_submodule "$local_mode" || is_submodule "$remote_mode"; then if is_submodule "$local_mode" || is_submodule "$remote_mode"
then
echo "Submodule merge conflict for '$MERGED':" echo "Submodule merge conflict for '$MERGED':"
local_sha1=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $2;}') local_sha1=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $2;}')
remote_sha1=$(git ls-files -u -- "$MERGED" | awk '{if ($3==3) print $2;}') remote_sha1=$(git ls-files -u -- "$MERGED" | awk '{if ($3==3) print $2;}')
@ -232,7 +256,8 @@ merge_file () {
checkout_staged_file 2 "$MERGED" "$LOCAL" checkout_staged_file 2 "$MERGED" "$LOCAL"
checkout_staged_file 3 "$MERGED" "$REMOTE" checkout_staged_file 3 "$MERGED" "$REMOTE"
if test -z "$local_mode" -o -z "$remote_mode"; then if test -z "$local_mode" -o -z "$remote_mode"
then
echo "Deleted merge conflict for '$MERGED':" echo "Deleted merge conflict for '$MERGED':"
describe_file "$local_mode" "local" "$LOCAL" describe_file "$local_mode" "local" "$LOCAL"
describe_file "$remote_mode" "remote" "$REMOTE" describe_file "$remote_mode" "remote" "$REMOTE"
@ -240,7 +265,8 @@ merge_file () {
return return
fi fi
if is_symlink "$local_mode" || is_symlink "$remote_mode"; then if is_symlink "$local_mode" || is_symlink "$remote_mode"
then
echo "Symbolic link merge conflict for '$MERGED':" echo "Symbolic link merge conflict for '$MERGED':"
describe_file "$local_mode" "local" "$LOCAL" describe_file "$local_mode" "local" "$LOCAL"
describe_file "$remote_mode" "remote" "$REMOTE" describe_file "$remote_mode" "remote" "$REMOTE"
@ -251,29 +277,34 @@ merge_file () {
echo "Normal merge conflict for '$MERGED':" echo "Normal merge conflict for '$MERGED':"
describe_file "$local_mode" "local" "$LOCAL" describe_file "$local_mode" "local" "$LOCAL"
describe_file "$remote_mode" "remote" "$REMOTE" describe_file "$remote_mode" "remote" "$REMOTE"
if "$prompt" = true; then if "$prompt" = true
then
printf "Hit return to start merge resolution tool (%s): " "$merge_tool" printf "Hit return to start merge resolution tool (%s): " "$merge_tool"
read ans || return 1 read ans || return 1
fi fi
if base_present; then if base_present
then
present=true present=true
else else
present=false present=false
fi fi
if ! run_merge_tool "$merge_tool" "$present"; then if ! run_merge_tool "$merge_tool" "$present"
then
echo "merge of $MERGED failed" 1>&2 echo "merge of $MERGED failed" 1>&2
mv -- "$BACKUP" "$MERGED" mv -- "$BACKUP" "$MERGED"
if test "$merge_keep_temporaries" = "false"; then if test "$merge_keep_temporaries" = "false"
then
cleanup_temp_files cleanup_temp_files
fi fi
return 1 return 1
fi fi
if test "$merge_keep_backup" = "true"; then if test "$merge_keep_backup" = "true"
then
mv -- "$BACKUP" "$MERGED.orig" mv -- "$BACKUP" "$MERGED.orig"
else else
rm -- "$BACKUP" rm -- "$BACKUP"
@ -362,15 +393,14 @@ do
done done
prompt_after_failed_merge () { prompt_after_failed_merge () {
while true; do while true
do
printf "Continue merging other unresolved paths (y/n) ? " printf "Continue merging other unresolved paths (y/n) ? "
read ans || return 1 read ans || return 1
case "$ans" in case "$ans" in
[yY]*) [yY]*)
return 0 return 0
;; ;;
[nN]*) [nN]*)
return 1 return 1
;; ;;
@ -378,7 +408,8 @@ prompt_after_failed_merge() {
done done
} }
if test -z "$merge_tool"; then if test -z "$merge_tool"
then
merge_tool=$(get_merge_tool "$merge_tool") || exit merge_tool=$(get_merge_tool "$merge_tool") || exit
fi fi
merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)" merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)"
@ -388,7 +419,8 @@ last_status=0
rollup_status=0 rollup_status=0
files= files=
if test $# -eq 0 ; then if test $# -eq 0
then
cd_to_toplevel cd_to_toplevel
if test -e "$GIT_DIR/MERGE_RR" if test -e "$GIT_DIR/MERGE_RR"
@ -401,7 +433,8 @@ else
files=$(git ls-files -u -- "$@" | sed -e 's/^[^ ]* //' | sort -u) files=$(git ls-files -u -- "$@" | sed -e 's/^[^ ]* //' | sort -u)
fi fi
if test -z "$files" ; then if test -z "$files"
then
echo "No files need merging" echo "No files need merging"
exit 0 exit 0
fi fi
@ -413,13 +446,15 @@ IFS='
' '
for i in $files for i in $files
do do
if test $last_status -ne 0; then if test $last_status -ne 0
then
prompt_after_failed_merge || exit 1 prompt_after_failed_merge || exit 1
fi fi
printf "\n" printf "\n"
merge_file "$i" merge_file "$i"
last_status=$? last_status=$?
if test $last_status -ne 0; then if test $last_status -ne 0
then
rollup_status=1 rollup_status=1
fi fi
done done