diff --git a/tools/git-submit b/tools/git-submit index 5cda9aa..58a8544 100755 --- a/tools/git-submit +++ b/tools/git-submit @@ -2,12 +2,22 @@ set -eu -BRANCH=$1 +REMOTE="" +BRANCH="${1-master}" + +if (echo "$BRANCH" | grep ':' > /dev/null); then + REMOTE="$(echo "$BRANCH" | grep -o '^[^:]*')" + BRANCH="$(echo "$BRANCH" | grep -o '[^:]*$')" + REMOTE="$(git remote -v | grep ":$REMOTE/.* (push)" | grep -o '^\S*')" +fi + +if [ -n "$REMOTE" ]; then + git checkout --track "$REMOTE/$BRANCH" +else + git checkout $BRANCH +fi -git checkout "$BRANCH" git push upstream "$BRANCH:master" -git checkout master -git merge upstream/master -git push +git sync git branch -d "$BRANCH" git push origin ":$BRANCH" diff --git a/tools/git-sync b/tools/git-sync index 7218248..159053f 100755 --- a/tools/git-sync +++ b/tools/git-sync @@ -31,7 +31,6 @@ case "$BRANCH" in else git checkout $BRANCH fi - git checkout $BRANCH git rebase upstream/master ;; esac