Browse Source

scripts: do not get confused with HEAD in work tree

When you have a file called HEAD in your work tree, many commands that
our scripts feed "HEAD" to would complain about the rev vs path
ambiguity.  A solution is to form command line more carefully by
appending -- to them, which makes it clear that we mean HEAD rev not
HEAD file.

This patch would apply to maint.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 17 years ago
parent
commit
38762c47d6
  1. 8
      git-am.sh
  2. 2
      git-filter-branch.sh
  3. 2
      git-merge-ours.sh
  4. 4
      git-rebase--interactive.sh
  5. 4
      git-rebase.sh
  6. 2
      git-stash.sh

8
git-am.sh

@ -214,7 +214,7 @@ fi


case "$resolved" in case "$resolved" in
'') '')
files=$(git diff-index --cached --name-only HEAD) || exit files=$(git diff-index --cached --name-only HEAD --) || exit
if [ "$files" ]; then if [ "$files" ]; then
echo "Dirty index: cannot apply patches (dirty: $files)" >&2 echo "Dirty index: cannot apply patches (dirty: $files)" >&2
exit 1 exit 1
@ -348,7 +348,7 @@ do
case "$resolved$interactive" in case "$resolved$interactive" in
tt) tt)
# This is used only for interactive view option. # This is used only for interactive view option.
git diff-index -p --cached HEAD >"$dotest/patch" git diff-index -p --cached HEAD -- >"$dotest/patch"
;; ;;
esac esac
esac esac
@ -409,7 +409,7 @@ do
# trust what the user has in the index file and the # trust what the user has in the index file and the
# working tree. # working tree.
resolved= resolved=
git diff-index --quiet --cached HEAD && { git diff-index --quiet --cached HEAD -- && {
echo "No changes - did you forget to use 'git add'?" echo "No changes - did you forget to use 'git add'?"
stop_here_user_resolve $this stop_here_user_resolve $this
} }
@ -431,7 +431,7 @@ do
then then
# Applying the patch to an earlier tree and merging the # Applying the patch to an earlier tree and merging the
# result may have produced the same tree as ours. # result may have produced the same tree as ours.
git diff-index --quiet --cached HEAD && { git diff-index --quiet --cached HEAD -- && {
echo No changes -- Patch already applied. echo No changes -- Patch already applied.
go_next go_next
continue continue

2
git-filter-branch.sh

@ -95,7 +95,7 @@ USAGE="[--env-filter <command>] [--tree-filter <command>] \
. git-sh-setup . git-sh-setup


git diff-files --quiet && git diff-files --quiet &&
git diff-index --cached --quiet HEAD || git diff-index --cached --quiet HEAD -- ||
die "Cannot rewrite branch(es) with a dirty working directory." die "Cannot rewrite branch(es) with a dirty working directory."


tempdir=.git-rewrite tempdir=.git-rewrite

2
git-merge-ours.sh

@ -9,6 +9,6 @@
# because the current index is what we will be committing as the # because the current index is what we will be committing as the
# merge result. # merge result.


git diff-index --quiet --cached HEAD || exit 2 git diff-index --quiet --cached HEAD -- || exit 2


exit 0 exit 0

4
git-rebase--interactive.sh

@ -52,7 +52,7 @@ require_clean_work_tree () {
git rev-parse --verify HEAD > /dev/null && git rev-parse --verify HEAD > /dev/null &&
git update-index --refresh && git update-index --refresh &&
git diff-files --quiet && git diff-files --quiet &&
git diff-index --cached --quiet HEAD || git diff-index --cached --quiet HEAD -- ||
die "Working tree is dirty" die "Working tree is dirty"
} }


@ -331,7 +331,7 @@ do
git rev-parse --verify HEAD > /dev/null && git rev-parse --verify HEAD > /dev/null &&
git update-index --refresh && git update-index --refresh &&
git diff-files --quiet && git diff-files --quiet &&
! git diff-index --cached --quiet HEAD && ! git diff-index --cached --quiet HEAD -- &&
. "$DOTEST"/author-script && . "$DOTEST"/author-script &&
export GIT_AUTHOR_NAME GIT_AUTHOR_NAME GIT_AUTHOR_DATE && export GIT_AUTHOR_NAME GIT_AUTHOR_NAME GIT_AUTHOR_DATE &&
git commit -F "$DOTEST"/message -e git commit -F "$DOTEST"/message -e

4
git-rebase.sh

@ -60,7 +60,7 @@ continue_merge () {
fi fi


cmt=`cat "$dotest/current"` cmt=`cat "$dotest/current"`
if ! git diff-index --quiet HEAD if ! git diff-index --quiet HEAD --
then then
if ! git-commit -C "$cmt" if ! git-commit -C "$cmt"
then then
@ -253,7 +253,7 @@ fi


# The tree must be really really clean. # The tree must be really really clean.
git update-index --refresh || exit git update-index --refresh || exit
diff=$(git diff-index --cached --name-status -r HEAD) diff=$(git diff-index --cached --name-status -r HEAD --)
case "$diff" in case "$diff" in
?*) echo "cannot rebase: your index is not up-to-date" ?*) echo "cannot rebase: your index is not up-to-date"
echo "$diff" echo "$diff"

2
git-stash.sh

@ -14,7 +14,7 @@ trap 'rm -f "$TMP-*"' 0
ref_stash=refs/stash ref_stash=refs/stash


no_changes () { no_changes () {
git diff-index --quiet --cached HEAD && git diff-index --quiet --cached HEAD -- &&
git diff-files --quiet git diff-files --quiet
} }



Loading…
Cancel
Save