それであれやこれやとbranchからmergeすると、毎回Revisionを確認しなくちゃいけなくてその作業が非常にめんどう。
自分の場合、「最初にbranchしたRevisionからHeadまで」というパターンが主なので専用のスクリプトを組んでみた。
svn_merge.sh
#!/bin/sh
SVN=/usr/local/bin/svn
REVISIONS="^r[0-9]\s\|\s.+\s\|\s[0-9]\{4\}-[0-9]\{1,2\}-[0-9]\{1,2\}\s.+\|\s[0-9]+\sli
ne$"
REVISION_NO="s/r\([0-9]*\)/\1/"
if [ $# = 0 ];
then
exit -1
fi
FIRST_REV=`${SVN} log $1 --incremental | grep -e ${REVISIONS} | awk '{printf "%s\n", $
1}' | sed ${REVISION_NO} | tail -1`
echo "***** Dry Run *****"
SVNLOG=`${SVN} merge --dry-run -r ${FIRST_REV}:HEAD $1 $2`
echo ${SVNLOG}
echo "Merge OK? [y/n]:"
read ans
if [ ans = 'y' ];
then
SVNLOG=`${SVN} merge -r ${FIRST_REV}:HEAD $1 $2`
echo ${SVNLOG}
fi
SVN=/usr/local/bin/svn
REVISIONS="^r[0-9]\s\|\s.+\s\|\s[0-9]\{4\}-[0-9]\{1,2\}-[0-9]\{1,2\}\s.+\|\s[0-9]+\sli
ne$"
REVISION_NO="s/r\([0-9]*\)/\1/"
if [ $# = 0 ];
then
exit -1
fi
FIRST_REV=`${SVN} log $1 --incremental | grep -e ${REVISIONS} | awk '{printf "%s\n", $
1}' | sed ${REVISION_NO} | tail -1`
echo "***** Dry Run *****"
SVNLOG=`${SVN} merge --dry-run -r ${FIRST_REV}:HEAD $1 $2`
echo ${SVNLOG}
echo "Merge OK? [y/n]:"
read ans
if [ ans = 'y' ];
then
SVNLOG=`${SVN} merge -r ${FIRST_REV}:HEAD $1 $2`
echo ${SVNLOG}
fi
一回DryRunして、確認してからマージしてます。
最初のRev取ってるところは、svn logがきっとバージョンによって違うんだろうなぁ思ってみる・・・。
PATH通して、
svn_mrge.sh "マージしたいファイル" "対象ファイル"
でOKのはず。やっぱりsvnは使いにくいから、いっそ対話型のもの作ろうかと思った。