2 . git-sh-setup-script || die
"Not a git archive"
4 # We want a clean tree and clean index to be able to revert.
7 'nothing to commit') ;;
10 die
"Your working tree is dirty; cannot revert a previous patch." ;;
13 rev=$
(git-rev-parse
--verify "$@") &&
14 commit
=$
(git-rev-parse
--verify "$rev^0") ||
exit
15 if git-diff-tree
-R -M -p $commit | git-apply
--index &&
16 msg
=$
(git-rev-list
--pretty=oneline
--max-count=1 $commit)
19 echo "$msg" |
sed -e '
23 echo "This reverts $commit commit."
24 test "$rev" = "$commit" ||
25 echo "(original 'git revert' arguments: $@)"
28 # Now why did it fail?
29 parents
=`git-cat-file commit "$commit" 2>/dev/null |
30 sed -ne '/^$/q;/^parent /p' |
33 0) die
"Cannot revert the root commit nor non commit-ish." ;;
34 1) die
"The patch does not apply." ;;
35 *) die
"Cannot revert a merge commit." ;;