X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=git-reset.sh;h=a172d7ce25b40f192b0036d29a8a60e62649159c;hb=952c8c56380734d45bddf369fe478895672c5a3a;hp=2379db082f956e68a360cfbd667761490ecad5dd;hpb=27e4dd8de76bdd60c88003e0f27cee8ad26c5cd6;p=git.git diff --git a/git-reset.sh b/git-reset.sh index 2379db082..a172d7ce2 100755 --- a/git-reset.sh +++ b/git-reset.sh @@ -5,6 +5,8 @@ USAGE='[--mixed | --soft | --hard] [] [ [--] ...]' SUBDIRECTORY_OK=Yes . git-sh-setup +set_reflog_action "reset $*" +require_work_tree update= reset_type=--mixed unset rev @@ -41,19 +43,17 @@ case "$1" in --) shift ;; esac # affecting the working tree nor HEAD. if test $# != 0 then - test "$reset_type" == "--mixed" || + test "$reset_type" = "--mixed" || die "Cannot do partial $reset_type reset." - git ls-tree -r --full-name $rev -- "$@" | - git update-index --add --index-info || exit + + git-diff-index --cached $rev -- "$@" | + sed -e 's/^:\([0-7][0-7]*\) [0-7][0-7]* \([0-9a-f][0-9a-f]*\) [0-9a-f][0-9a-f]* [A-Z] \(.*\)$/\1 \2 \3/' | + git update-index --add --remove --index-info || exit git update-index --refresh exit fi -TOP=$(git-rev-parse --show-cdup) -if test ! -z "$TOP" -then - cd "$TOP" -fi +cd_to_toplevel if test "$reset_type" = "--hard" then @@ -71,7 +71,7 @@ then die "Cannot do a soft reset in the middle of a merge." fi else - git-read-tree --reset $update "$rev" || exit + git-read-tree -v --reset $update "$rev" || exit fi # Any resets update HEAD to the head being switched to. @@ -81,13 +81,13 @@ then else rm -f "$GIT_DIR/ORIG_HEAD" fi -git-update-ref -m "reset $reset_type $*" HEAD "$rev" +git-update-ref -m "$GIT_REFLOG_ACTION" HEAD "$rev" update_ref_status=$? case "$reset_type" in --hard ) test $update_ref_status = 0 && { - echo -n "HEAD is now at " + printf "HEAD is now at " GIT_PAGER= git log --max-count=1 --pretty=oneline \ --abbrev-commit HEAD }