diff-files: show diffs with stage0 and unmerged stage at the same time.
[gitweb.git] / git-checkout.sh
index cb33fdc7e20272a77d97d1b68c31d9b93d3cf4d4..4cf30e2c0529e90886e6edfd485cec67a278e224 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-. git-sh-setup || die "Not a git archive"
+. git-sh-setup
 
 usage () {
     die "usage: git checkout [-f] [-b <new_branch>] [<branch>] [<paths>...]"
@@ -82,7 +82,6 @@ then
                # rescuing paths and is never meant to remove what
                # is not in the named tree-ish.
                git-ls-tree -r "$new" "$@" |
-               sed -ne 's/^\([0-7]*\) blob \(.*\)$/\1 \2/p' |
                git-update-index --index-info || exit $?
        fi
        git-checkout-index -f -u -- "$@"
@@ -126,7 +125,9 @@ fi
 #
 if [ "$?" -eq 0 ]; then
        if [ "$newbranch" ]; then
-               echo $new > "$GIT_DIR/refs/heads/$newbranch"
+               leading=`expr "refs/heads/$newbranch" : '\(.*\)/'` &&
+               mkdir -p "$GIT_DIR/$leading" &&
+               echo $new >"$GIT_DIR/refs/heads/$newbranch" || exit
                branch="$newbranch"
        fi
        [ "$branch" ] &&