GH-704 - Add script to back-port commits.
The script creates tickets for the back-ports, cherry-picks the latest commit of the current branch and adapts the commit messages of them to the ticket ids of the newly created tickets.
This commit is contained in:
40
etc/create-backport-tickets.sh
Executable file
40
etc/create-backport-tickets.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
# Format $ticketNumer $targetVersion[]
|
||||
|
||||
sourceGh="GH-$1"
|
||||
branch=$(git branch --show-current)
|
||||
json=$(gh issue view $1 --json=title,labels)
|
||||
|
||||
title=$(echo $json | jq -r '.title')
|
||||
labels=$(echo $json | jq -r '.labels[].name' | paste -sd ',' -)
|
||||
|
||||
number=$1
|
||||
|
||||
# For each of the target versions
|
||||
for version in ${@:2}
|
||||
do
|
||||
number=$(gh issue create --title "$title" --body "Back-port of $sourceGh." --label "$labels" --assignee "@me" --milestone "$version" | awk -F '/' '{print $NF}')
|
||||
|
||||
# Turn 1.5.6 into 1.5.x
|
||||
targetBranch="$(echo "$version" | grep -oE '^[0-9]+\.[0-9]+').x"
|
||||
|
||||
# Checkout target branch and cherry-pick commit
|
||||
|
||||
echo "Checking out branch $targetBranch"
|
||||
git checkout $targetBranch
|
||||
|
||||
echo "Cherry-pick commit from $branch"
|
||||
git cherry-pick $branch
|
||||
|
||||
# Replace ticket reference with new one
|
||||
targetGh="GH-$number"
|
||||
expression="s/$sourceGh/$targetGh/g"
|
||||
message=$(git log -1 --pretty=format:"%s" | sed $expression)
|
||||
|
||||
# Update commit message to refer to new ticket
|
||||
echo "Adapt commit message from $sourceGh to $targetGh"
|
||||
git commit --amend -m "$message"
|
||||
done
|
||||
|
||||
# Return to original branch
|
||||
git checkout $branch
|
||||
Reference in New Issue
Block a user