Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions utils/minor-release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/bin/bash

# Script: patch-release.sh
# Description:
# Cherry-picks a list of commits, amends each with the original commit hash for tracking,
# and generates a summary from the short github commit messages with links to each commit.
#
# Usage:
# ./patch-release.sh <commit1> <commit2> ...
#
# Example:
# ./patch-release.sh abc1234 def5678

set -e

# Check if at least two arguments are provided (repo and at least one commit)
if [ "$#" -lt 1 ]; then
echo "Usage: $0 <commit1> <commit2> ..."
echo "Example: $0 abc1234 def5678"
exit 1
fi

GITHUB_REPO="aiidateam/aiida-core"

# Create an array to store commit summaries
declare -a commit_summaries=()
commit_list=$(git rev-list "$1"..HEAD)

commits=()
while IFS= read -r line; do
commits+=("$line")
done <<< "$commit_list"



# Loop through each commit hash
for commit in "${commits[@]}"; do
# Cherry-pick the commit
if git cat-file -t "$commit"; then
# If cherry-pick succeeds, get the short message and short hash
commit_message=$(git log -1 --pretty=format:"%B" $commit)
original_short_hash=$(git log -1 --pretty=format:"%h" "$commit")
original_long_hash=$(git rev-parse $original_short_hash)

# Amend the cherry-picked commit to include the original commit ID for tracking
#git commit --amend -m "$commit_message" -m "Cherry-pick: $original_long_hash"

# Format the output as a Markdown list item and add to the array
short_commit_message=$(git log -1 --pretty=format:"%s" $commit)
cherry_picked_hash=$(git log -1 --pretty=format:"%h" $commit)
commit_summaries+=("- $short_commit_message [[${commit}]](https://github.com/$GITHUB_REPO/commit/${original_long_hash})")
else
echo "Failed to cherry-pick commit $commit"
# Abort the cherry-pick in case of conflict
git cherry-pick --abort
exit 1
fi
done

# Print the summary
echo -e "\n### Cherry-Picked Commits Summary:\n"
for summary in "${commit_summaries[@]}"; do
echo "$summary"
done
6 changes: 3 additions & 3 deletions utils/patch-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ for commit in "$@"; do
# Cherry-pick the commit
if git cherry-pick "$commit"; then
# If cherry-pick succeeds, get the short message and short hash
commit_message=$(git log -1 --pretty=format:"%B" HEAD)
commit_message=$(git log -1 --pretty=format:"%B" $commit)
original_short_hash=$(git log -1 --pretty=format:"%h" "$commit")
original_long_hash=$(git rev-parse $original_short_hash)

# Amend the cherry-picked commit to include the original commit ID for tracking
git commit --amend -m "$commit_message" -m "Cherry-pick: $original_long_hash"

# Format the output as a Markdown list item and add to the array
short_commit_message=$(git log -1 --pretty=format:"%s" HEAD)
cherry_picked_hash=$(git log -1 --pretty=format:"%h" HEAD)
short_commit_message=$(git log -1 --pretty=format:"%s" $commit)
cherry_picked_hash=$(git log -1 --pretty=format:"%h" $commit)
commit_summaries+=("- $short_commit_message [[${commit}]](https://github.com/$GITHUB_REPO/commit/${original_long_hash})")
else
echo "Failed to cherry-pick commit $commit"
Expand Down