Browse Source

Do not require clean tree when reverting and cherry-picking.

My stupidity deserved to be yelled at by Linus ... there is no reason
to require the working tree to be clean when merging -- the only
requirements are index to match HEAD commit and the paths involved in
merge are up to date in the working tree.  Revert and cherry-pick are
just specialized forms of merge, and the requirements should be the
same.

Remove the 'general purpose routine to make sure tree is clean' from
git-sh-setup, to prevent me from getting tempted again.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 20 years ago
parent
commit
e2f5f6ef67
  1. 5
      git-revert.sh
  2. 11
      git-sh-setup.sh

5
git-revert.sh

@ -56,9 +56,12 @@ t) @@ -56,9 +56,12 @@ t)
die "Your index file is unmerged."
;;
*)
check_clean_tree || die "Cannot run $me from a dirty tree."
head=$(git-rev-parse --verify HEAD) ||
die "You do not have a valid HEAD"
files=$(git-diff-index --cached --name-only $head) || exit
if [ "$files" ]; then
die "Dirty index: cannot $me (dirty: $files)"
fi
;;
esac


11
git-sh-setup.sh

@ -17,17 +17,6 @@ die() { @@ -17,17 +17,6 @@ die() {
exit 1
}

check_clean_tree() {
dirty1_=`git-update-index -q --refresh` && {
dirty2_=`git-diff-index --name-only --cached HEAD`
case "$dirty2_" in '') : ;; *) (exit 1) ;; esac
} || {
echo >&2 "$dirty1_"
echo "$dirty2_" | sed >&2 -e 's/^/modified: /'
(exit 1)
}
}

[ -h "$GIT_DIR/HEAD" ] &&
[ -d "$GIT_DIR/refs" ] &&
[ -d "$GIT_OBJECT_DIRECTORY/00" ]

Loading…
Cancel
Save