| #!/bin/sh |
| # fetch gerrit patch into new branch named like the patch number. |
| # |
| # Usage: go to a git clone and pass a patch number: |
| # |
| # cd osmo-msc |
| # P 973 |
| # or |
| # P 973/2 |
| # |
| # Will create new local branches '973_4' (if 4 is the latest patch set) |
| # or '973_2', respectively. |
| |
| patch="$1" |
| |
| if [ -z "$patch" ]; then |
| echo "Usage: $0 1234[/5]" |
| exit 1 |
| fi |
| |
| if [ -z "$(echo "$patch" | grep '/')" ]; then |
| patch="/$patch/" |
| fi |
| |
| if [ -z "$(echo "$patch" | grep '^/')" ]; then |
| patch="/$patch" |
| fi |
| |
| last_set="$(git ls-remote origin "changes/*" | grep "$patch" | sed 's#.*/\([^/]*\)$#\1 &#' | sort -n | tail -n 1)" |
| if [ -z "$last_set" ]; then |
| echo "Not found: $patch" |
| exit 1 |
| fi |
| |
| change_name="$(echo "$last_set" | sed 's/.*\(refs.*\)/\1/')" |
| branch_name="$(echo "$change_name" | sed 's#refs/changes/../\([0-9]*\)/\([0-9]*\)#\1_\2#')" |
| |
| set -x |
| git fetch origin "$change_name" |
| git checkout -b "$branch_name" FETCH_HEAD |
| |