Allow the user to control the verbosity of merge-recursive.
[gitweb.git] / git-reset.sh
index 2379db082f956e68a360cfbd667761490ecad5dd..91c7e6e664eeac0a130044d3d026ccbbfa00f3b3 100755 (executable)
@@ -5,6 +5,8 @@
 USAGE='[--mixed | --soft | --hard]  [<commit-ish>] [ [--] <paths>...]'
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
+set_reflog_action "reset $*"
+require_work_tree
 
 update= reset_type=--mixed
 unset rev
@@ -43,17 +45,15 @@ if test $# != 0
 then
        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
@@ -81,7 +81,7 @@ 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