git-push: allow globbing wildcard refspec.
[gitweb.git] / git-rebase.sh
index 828c59ce61a8317f23ba9113e4de6e09a58e70ce..9d2f71d15c47ae69eed57a7301d47c93d5bb070a 100755 (executable)
@@ -27,8 +27,12 @@ Example:       git-rebase master~1 topic
        /                   -->           /
   D---E---F---G master          D---E---F---G master
 '
+
+SUBDIRECTORY_OK=Yes
 . git-sh-setup
 set_reflog_action rebase
+require_work_tree
+cd_to_toplevel
 
 RESOLVEMSG="
 When you have resolved this problem run \"git rebase --continue\".
@@ -245,7 +249,8 @@ fi
 git-update-index --refresh || exit
 diff=$(git-diff-index --cached --name-status -r HEAD)
 case "$diff" in
-?*)    echo "$diff"
+?*)    echo "cannot rebase: your index is not up-to-date"
+       echo "$diff"
        exit 1
        ;;
 esac
@@ -271,8 +276,12 @@ case "$#" in
        git-checkout "$2" || usage
        ;;
 *)
-       branch_name=`git symbolic-ref HEAD` || die "No current branch"
-       branch_name=`expr "z$branch_name" : 'zrefs/heads/\(.*\)'`
+       if branch_name=`git symbolic-ref -q HEAD`
+       then
+               branch_name=`expr "z$branch_name" : 'zrefs/heads/\(.*\)'`
+       else
+               branch_name=HEAD ;# detached
+       fi
        ;;
 esac
 branch=$(git-rev-parse --verify "${branch_name}^0") || exit