X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=git-publish-branch;h=74584e60b255513ed8aeecf4f1178fb4f64d2749;hb=31e5b27edfe737e8eed17523cc546f454d68498f;hp=9026e0072759eb39d0abfd374675dddd3e4257ae;hpb=fdc47d838cc182bec93f1b49f3a5d7f6a88a8cc0;p=git-utils.git diff --git a/git-publish-branch b/git-publish-branch index 9026e00..74584e6 100755 --- a/git-publish-branch +++ b/git-publish-branch @@ -2,9 +2,13 @@ # git-publish-branch [-d] [branch] [repository] unset delete +unset force if [ "$1" = "-d" ]; then delete=1 shift +elif [ "$1" = "-f" ]; then + force=1 + shift fi unset branch @@ -47,16 +51,37 @@ if [ $delete ]; then git config --unset "branch.$branch.merge" git config --unset "branch.$branch" fi +elif [ $force ]; then + if [ -z "$local_ref" ]; then + echo "no local branch $branch" >&2 + exit 1 + elif [ -z "$remote_ref" ]; then + echo "$remote has no branch $branch" >&2 + exit 1 + elif [ -z "$remote_config" ]; then + echo "local branch $branch is not a tracking branch" >&2 + exit 1 + fi + + # Delete the remote branch + if [ -n "$remote_ref" ]; then + git push "$remote" ":refs/heads/$branch" + else + echo "$remote has to remote branch $branch" >&2 + fi + + # Push the new branch + git push "$remote" "+$branch:refs/heads/$branch" else if [ -z "$local_ref" ]; then - echo "$0: no local branch $branch" >&2 - exit 127 + echo "no local branch $branch" >&2 + exit 1 elif [ -n "$remote_ref" ]; then - echo "$0: $remote already has branch $branch" >&2 - exit 127 + echo "$remote already has branch $branch" >&2 + exit 1 elif [ -n "$remote_config" ]; then - echo "$0: local branch $branch is already a tracking branch" >&2 - exit 127 + echo "local branch $branch is already a tracking branch" >&2 + exit 1 fi git push "$remote" "$branch:refs/heads/$branch"