X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-reset.sh;h=a172d7ce25b40f192b0036d29a8a60e62649159c;hb=240ba7f235c9b946678bd6d34826fb73ea8fd90e;hp=a9693701a34dac623fcddb1943ffe326bdb05405;hpb=3bd5c81e0243e4ff391b38b31ef237e46eca257b;p=git.git diff --git a/git-reset.sh b/git-reset.sh index a9693701a..a172d7ce2 100755 --- a/git-reset.sh +++ b/git-reset.sh @@ -6,6 +6,7 @@ USAGE='[--mixed | --soft | --hard] [] [ [--] ...]' SUBDIRECTORY_OK=Yes . git-sh-setup set_reflog_action "reset $*" +require_work_tree update= reset_type=--mixed unset rev @@ -42,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 @@ -72,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. @@ -88,7 +87,7 @@ 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 }