svnのマージ作業にsvnmarge.pyを使ってみました

ソースの管理がsvnでおこなわれているのですが、マージ作業をすることになりました。そこで、いつもはeclipsesubversive上でおこなっているところをツールを使ってみることにしました。

svnmarge.py

"http://www.asahi-net.or.jp/~iu9m-tcym/svnmerge/svnmerge_py_ja.html"
これは、ざっくり言うとsvnのマージ作業を簡単にしてくれるものですかね。

所感

やり方を覚えると確かに楽できました。ただ、まだsvnmarge.pyを信用しきれていないのでどこまでできるのか不明です。また、マージ対象が複雑なコミット状態にあると簡単にはいかないと聞いています。ただ、svnmarge.pyを使用している限り重複したマージはおこなわれないようなのでそれは助かると思いまいた。あと、マージもとのコミットメッセージが一気にマージ先にコミットされるので、これはこれでいいのかもと思いました。

まずはダウンロードして配置

pyファイルをダウンロードしてパスが通っているディレクトリに配置しておきます。また、そのまま実行するので実行権限も与えておきます。

cd ~/opt/bin
wget http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py
chmod +x svnmerge.py

svnの認証でつまづく

svnの認証部分でエラーが発生しました。svn --non-interactiveという部分が問題のようであったため、--non-interactiveを外してすり抜けました。

# line:319
#    cmd = ' '.join(filter(None, [opts["svn"], "--non-interactive",
#                                 username, password, configdir, s]))
     cmd = ' '.join(filter(None, [opts["svn"], username, password, configdir, s]))

マージ作業の開始

今回は、ブランチをトランクへマージしました。

作業の流れ
  • trunkを用意する
  • svnmarge.pyの初期化
  • プロパティ&メッセージのコミット
  • 使用済みメッセージファイルの削除
  • svnmarge.pyのマージの実行
  • プロパティ&メッセージのコミット
  • 使用済みメッセージファイルの削除
実際のコマンドはこんな感じ
svn co <trunk url> 
svnmerge.py init <branches url> 
svn ci -F svnmerge-commit-message.txt 
rm svnmerge-commit-message.txt 
svnmerge.py merge -b 
svn ci -F svnmerge-commit-message.txt 
rm svnmerge-commit-message.txt


svnmarge.pyでマージライフが幸せになることを祈ります。以上です。