From: Junio C Hamano Date: Mon, 08 Aug 2005 20:47:09 GMT Subject: Re: "git revert" (Re: pci_update_resource() getting called on sparc64) Message-ID: <7vd5oo40mq.fsf@assigned-by-dhcp.cox.net> In-Reply-To: Linus Torvalds writes: >> It may not have the nicest error messages: if you try to revert a merge >> (which won't have a diff), git-apply will say something like >> >> fatal: No changes >> >> which isn't exactly being helpful. And the revert message could be made >> more interesting (like putting the first line of the description of what >> we reverted into the message instead of just the revision number). > Comments? > > Linus I like the general idea, and if we had a commit pretty format "oneline", then something like this would make it look nicer. Totally untested. I acquired your habit of coding in my e-mail client ;-). #!/bin/sh . git-sh-setup-script || die "Not a git archive" rev=$(git-rev-parse --verify --revs-only "$@") && commit=$(git-rev-parse --verify --revs-only "$commit^0") || exit if git-diff-tree -R -p $commit | git-apply --index && msg=$(git-rev-list --pretty=oneline --max-count=1 $commit) then { echo "Revert $msg" echo echo "This reverts $commit commit." test "$rev" = "$commit" || echo "(original 'git revert' arguments: $@)" } | git commit else # Now why did it fail? parents=`git-cat-file commit "$commit" 2>/dev/null | sed -ne '/^$/q;/^parent /p' | wc -l` case $parents in 0) die "Cannot revert the root commit nor non commit-ish" ;; 1) die "The patch does not apply" ;; *) die "Cannot revert a merge commit" ;; esac fi