github.com/x-oss-byte/git-lfs@v2.5.2+incompatible/script/backport-pr (about)

     1  #!/usr/bin/env bash
     2  #
     3  # Backports a PR into a release branch:
     4  #
     5  #   # backport PR #123 into release-0.5-backport-123
     6  #   $ git checkout master
     7  #   $ git pull
     8  #   $ script/backport-pr 1.1 1023
     9  
    10  relversion="v$1.x"
    11  relbranch="release-$1"
    12  pr="$2"
    13  prbranch="$relbranch-backport-$pr"
    14  pullsurl="https://api.github.com/repos/git-lfs/git-lfs/pulls"
    15  prurl="https://api.github.com/repos/git-lfs/git-lfs/pulls/$pr"
    16  prjson="$(curl -n $pullsurl/$pr 2>/dev/null)"
    17  headref="$(echo $prjson | jq -r -e ".head.ref")"
    18  [ "$?" -ne 0 ] && {
    19    echo "PR #$pr is invalid."
    20    exit 1
    21  }
    22  prtitle="$(echo $prjson | jq -r ".title" | sed "s/\"/'/g")"
    23  
    24  git checkout -q -f $relbranch
    25  git clean -q -fdx
    26  git pull -q
    27  git checkout -q -f -B $prbranch
    28  
    29  commit=`git log -1 --pretty=%H "--grep=Merge pull request #$pr" "--grep=Merge branch '.*$headref'" master`
    30  
    31  echo "Backporting:\n"
    32  
    33  git log -1 $commit
    34  
    35  conflicts=""
    36  
    37  git cherry-pick -x --allow-empty -m1 $commit &> /dev/null || {
    38    unmerged=$(git ls-files --unmerged --stage | cut -f 2 -d$'\t' | uniq)
    39    conflicts="\n\nConflicting files:"
    40    for file in $unmerged; do
    41      git add "$file"
    42      conflicts="$conflicts\n- $file"
    43    done
    44    git commit -q --no-edit
    45  }
    46  
    47  commitmsg="Backport $headref from #$pr to $relbranch"
    48  if [ "$conflicts" ]; then
    49    commitmsg="$commitmsg [merge conflicts]"
    50  fi
    51  
    52  git commit -q --allow-empty --amend -m "$commitmsg"
    53  git push -q -f origin $prbranch
    54  git checkout -q -f $relbranch
    55  git branch -q -D $prbranch
    56  
    57  curl -in $pullsurl -d "{
    58    \"title\": \"Backport #$pr for $relversion: $prtitle\",
    59    \"head\": \"$prbranch\",
    60    \"base\": \"$relbranch\",
    61    \"body\": \"This backports #$pr.$conflicts\"
    62  }" 2>/dev/null