gnucash/util/git-backport.sh
Christian Stimming efc19c85eb Add shell script to easily back-port commits in git-svn from trunk to other branches.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@17856 57a11ea4-9604-0410-9ed3-97b8803252fd
2009-01-31 10:24:34 +00:00

31 lines
753 B
Bash
Executable File

#!/bin/bash
REV=$1
: ${ORIGBRANCH=trunk}
: ${WHOAMI=`whoami`}
TMPFILE=tmplog.tmp
#TMPFILE2=tmplog2.tmp
# Cherry-pick the other commit
ORIGID=`git svn find-rev r${REV} ${ORIGBRANCH}`
if [ -z "${ORIGID}" ] ; then
echo "Revision ${REV} not found in branch ${ORIGBRANCH}"
exit 1
fi
git cherry-pick ${ORIGID}
# Create new log message by modifying the old one
git log --pretty=format:"[$REV] %s%n%n%b" HEAD^..HEAD \
| grep -v '^BP$' | grep -v 'git-svn-id:' > ${TMPFILE}
OTHERAUTHOR=`git log --pretty=format:"%an" HEAD^..HEAD`
if [ "${WHOAMI}" != "${OTHERAUTHOR}" ]; then
echo -e "\nOriginal commit by ${OTHERAUTHOR}." >> ${TMPFILE}
fi
# Commit new log message
git commit --amend -F ${TMPFILE}
# Clean up temporary files
rm -f ${TMPFILE}