From: Junio C Hamano Date: Wed, 01 May 2013 17:13:49 GMT Subject: Re: [PATCH] contrib/subtree: don't delete remote branches if split fails Message-ID: <7vd2ta8vxu.fsf@alter.siamese.dyndns.org> In-Reply-To: <397ab75eeb9d1c60f418b1ded23d8de04cf16251.1367396752.git.john@keeping.me.uk> John Keeping writes: > 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 > Signed-off-by: John Keeping > --- > contrib/subtree/git-subtree.sh | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh > index 8a23f58..10daa8b 100755 > --- a/contrib/subtree/git-subtree.sh > +++ b/contrib/subtree/git-subtree.sh > @@ -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 Looks trivially correct to me.