diff options
Diffstat (limited to '')
-rwxr-xr-x | bin/git-cherry-pick-recursive | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/bin/git-cherry-pick-recursive b/bin/git-cherry-pick-recursive new file mode 100755 index 0000000..96707f5 --- /dev/null +++ b/bin/git-cherry-pick-recursive @@ -0,0 +1,37 @@ +git log master | awk '/^commit / { print $2 }' | reverse | sed 1d +#!/bin/sh + +# source-tools - Manage Git repositories effectively and efficiently +# Copyright (C) 2014-2017 Daniel Baumann <daniel.baumann@open-infrastructure.net> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +BRANCH="${1}" +ID="${2}" + +if [ -z "${BRANCH}" ] || [ -z "${ID}" ] +then + echo "Usage: $0 BRANCH ID" + exit 1 +fi + +COMMITS="$(git log ${BRANCH} -- | awk '/^commit / { print $2 }')" +COMMITS="$(echo ${COMMITS} | sed -e "s|${ID}.*$|${ID}|" | awk '{ a[NR]=$0 } END { for(i=NR; i; --i) print a[i] } ')" + +for COMMIT in ${COMMITS} +do + git cherry-pick ${COMMIT} +done |