mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Merge pull request #39 from phil-opp/tools
Add script to cherry-pick commits to tags
This commit is contained in:
20
scripts/cherry_pick_to_tags.sh
Normal file
20
scripts/cherry_pick_to_tags.sh
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
# file at the top-level directory of this distribution and at
|
||||||
|
# http://rust-lang.org/COPYRIGHT.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
# option. This file may not be copied, modified, or distributed
|
||||||
|
# except according to those terms.
|
||||||
|
|
||||||
|
# Exit if anything fails
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Copy internal script to a temporary untracked file because an untracked
|
||||||
|
# file is kept by git when switching branches (that way we can update tags
|
||||||
|
# where this script doesn't exist).
|
||||||
|
cp "cherry_pick_to_tags_internal.sh" "cherry_pick_to_tags_internal_tmp.sh"
|
||||||
|
sh "cherry_pick_to_tags_internal_tmp.sh" $*
|
||||||
|
rm "cherry_pick_to_tags_internal_tmp.sh"
|
||||||
50
scripts/cherry_pick_to_tags_internal.sh
Normal file
50
scripts/cherry_pick_to_tags_internal.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
# file at the top-level directory of this distribution and at
|
||||||
|
# http://rust-lang.org/COPYRIGHT.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
# option. This file may not be copied, modified, or distributed
|
||||||
|
# except according to those terms.
|
||||||
|
|
||||||
|
# Exit if anything fails
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$#" -lt 2 ]; then
|
||||||
|
echo "Usage: $0 COMMIT_HASH TAGS" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
branch_name=$(git symbolic-ref -q HEAD)
|
||||||
|
branch_name=${branch_name##refs/heads/}
|
||||||
|
branch_name=${branch_name:-HEAD}
|
||||||
|
|
||||||
|
commit="$1"
|
||||||
|
|
||||||
|
echo "current branch $branch_name"
|
||||||
|
echo "commit hash $commit"
|
||||||
|
|
||||||
|
# update tags
|
||||||
|
git fetch --tags
|
||||||
|
|
||||||
|
shift
|
||||||
|
for tag in "$@"; do
|
||||||
|
echo "UPDATING TAG $tag"
|
||||||
|
{
|
||||||
|
git branch tmp_update_tag_"$tag" "$tag"
|
||||||
|
|
||||||
|
# cherry pick commit and update tag
|
||||||
|
git checkout tmp_update_tag_"$tag"
|
||||||
|
git cherry-pick -x "$commit"
|
||||||
|
git tag -f "$tag" HEAD
|
||||||
|
|
||||||
|
# switch back to previous branch
|
||||||
|
git checkout "$branch_name"
|
||||||
|
git branch -D tmp_update_tag_"$tag"
|
||||||
|
|
||||||
|
# push the updated tag
|
||||||
|
git push origin "$tag" --force
|
||||||
|
} >/dev/null
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user