Skip to content

Commit

Permalink
Do not require clean tree when reverting and cherry-picking.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Sep 27, 2005
1 parent a935824 commit e2f5f6e
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 12 deletions.
5 changes: 4 additions & 1 deletion git-revert.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
11 changes: 0 additions & 11 deletions git-sh-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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" ]

0 comments on commit e2f5f6e

Please sign in to comment.