contrib/subtree: don't delete remote branches if split fails
authorJohn Keeping <john@keeping.me.uk>
Wed, 1 May 2013 08:25:52 +0000 (09:25 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 May 2013 17:13:32 +0000 (10:13 -0700)
When using "git subtree push" to split out a subtree and push it to a
remote repository, we do not detect if the split command fails which
causes the LHS of the refspec to be empty, deleting the remote branch.

Fix this by pulling the result of the split command into a variable so
that we can die if the command fails.

Reported-by: Steffen Jaeckel <steffen.jaeckel@stzedn.de>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/subtree/git-subtree.sh
index 8a23f58ba04c4b1402c66d03db69d0c109c90b58..10daa8b0eb3352305347354d09ef443993af7809 100755 (executable)
@@ -715,7 +715,8 @@ cmd_push()
            repository=$1
            refspec=$2
            echo "git push using: " $repository $refspec
-           git push $repository $(git subtree split --prefix=$prefix):refs/heads/$refspec
+           localrev=$(git subtree split --prefix="$prefix") || die
+           git push $repository $localrev:refs/heads/$refspec
        else
            die "'$dir' must already exist. Try 'git subtree add'."
        fi