Use diff* with --exit-code in git-am, git-rebase and git-merge-ours
This simplifies the shell code, reduces its memory footprint, and speeds things up. The performance improvements should be noticable when git-rebase works on big commits. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
2a18c266d0
commit
06aff47b22
18
git-am.sh
18
git-am.sh
@ -408,12 +408,10 @@ do
|
||||
# trust what the user has in the index file and the
|
||||
# working tree.
|
||||
resolved=
|
||||
changed="$(git-diff-index --cached --name-only HEAD)"
|
||||
if test '' = "$changed"
|
||||
then
|
||||
git-diff-index --quiet --cached HEAD && {
|
||||
echo "No changes - did you forget to use 'git add'?"
|
||||
stop_here_user_resolve $this
|
||||
fi
|
||||
}
|
||||
unmerged=$(git-ls-files -u)
|
||||
if test -n "$unmerged"
|
||||
then
|
||||
@ -435,13 +433,11 @@ do
|
||||
then
|
||||
# Applying the patch to an earlier tree and merging the
|
||||
# result may have produced the same tree as ours.
|
||||
changed="$(git-diff-index --cached --name-only HEAD)"
|
||||
if test '' = "$changed"
|
||||
then
|
||||
echo No changes -- Patch already applied.
|
||||
go_next
|
||||
continue
|
||||
fi
|
||||
git-diff-index --quiet --cached HEAD && {
|
||||
echo No changes -- Patch already applied.
|
||||
go_next
|
||||
continue
|
||||
}
|
||||
# clear apply_status -- we have successfully merged.
|
||||
apply_status=0
|
||||
fi
|
||||
|
@ -9,6 +9,6 @@
|
||||
# because the current index is what we will be committing as the
|
||||
# merge result.
|
||||
|
||||
test "$(git-diff-index --cached --name-status HEAD)" = "" || exit 2
|
||||
git-diff-index --quiet --cached HEAD || exit 2
|
||||
|
||||
exit 0
|
||||
|
@ -59,7 +59,7 @@ continue_merge () {
|
||||
die "$RESOLVEMSG"
|
||||
fi
|
||||
|
||||
if test -n "`git-diff-index HEAD`"
|
||||
if ! git-diff-index --quiet HEAD
|
||||
then
|
||||
if ! git-commit -C "`cat $dotest/current`"
|
||||
then
|
||||
@ -124,13 +124,11 @@ while case "$#" in 0) break ;; esac
|
||||
do
|
||||
case "$1" in
|
||||
--continue)
|
||||
diff=$(git-diff-files)
|
||||
case "$diff" in
|
||||
?*) echo "You must edit all merge conflicts and then"
|
||||
git-diff-files --quiet || {
|
||||
echo "You must edit all merge conflicts and then"
|
||||
echo "mark them as resolved using git update-index"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
if test -d "$dotest"
|
||||
then
|
||||
prev_head="`cat $dotest/prev_head`"
|
||||
|
Loading…
Reference in New Issue
Block a user