diff options
Diffstat (limited to 'git-request-get')
-rwxr-xr-x | git-request-get | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/git-request-get b/git-request-get index c5d3c3d..2ba5ec4 100755 --- a/git-request-get +++ b/git-request-get @@ -1,10 +1,41 @@ #!/bin/bash -set -eux +set -eu + +if [ $# -lt 1 ] ; then +STR="$(cat)" +else +echo "No options yet!" +exit 1 +fi # 1. Collect URL of the incoming repo -# 2. Check it is in our remotes -# 3. If it isn't, add it -# 4. Fetch the remote -# 5. Create new branch +URL="$(echo "$STR" | sed -n -e '/^are available in the Git repository at:/,+2 { +s/[[:space:]]\+// +s/\(=[[:digit:]]\{2\}\)\+$// +/^\(http\|git\)/p +}')" +# mapfile -t -c 1 -C 'cb() { [[ "$2" =~ (git|http|ssh):// ]] && printf "%s\n" "$2"; }; cb' URLS <<<"$STR" +# echo "$URLS[@]" +# 2. Check it is in our remotes mapfile REMOTES < <(git remote -v|awk '{print $1,$2;}') +REMOTE='' +for rem in "${REMOTES[@]}" ; do + if [[ ${rem} =~ $URL ]] ; then + REMOTE="$(echo "${rem}" | awk -F ' ' '{print $1;}' )" + break + fi +done + +# 4. Create new branch +BEG="$(echo "$STR" | awk '/^The following changes since commit / { print $NF }' | sed -e 's/[=:]*$//')" +END="$(echo "$STR" | awk '/^for you to fetch changes up to / { print $NF }' | sed -e 's/[=:]*$//')" + +# 5. Fetch the remote +if [[ -n "$REMOTE" ]] ; then + git fetch $REMOTE $END +else + git fetch $URL $END +fi + +git checkout -b _4review FETCH_HEAD |