この記事の続き
長い間、SVNブランチには重大な欠点が1つありました。 システムはマージを記憶していなかったため、プログラマはトランクから変更をコピーするときにリビジョン番号を保持するように気をつけなければなりませんでした。 この問題は、ログにコメントを追加することで部分的に解決されましたが、それでもエラーがたくさんあり、プログラマーの良心次第でした。
最後に、バージョン1.5では、Subversionプログラマーが長年の約束を果たし、ブランチを操作するための便利な機能をいくつか追加しました。
そのため、バージョン1.5では、mergeコマンドに2つの新しいオプション
--record-onlyと
--reintegrateが追加されました 。
現在、変更のコピーを制御する責任はSVN(マージトラッキング)の肩にかかっており、プログラマは更新コマンドのように頻繁にマージを簡単かつ恐れることなく実行できます。
これで、最後のマージのリビジョン番号を管理する必要はまったくありません。 SVNは非常に賢くなったため、まだ持っていない変更のみをコピーします。 以前に-rスイッチを使用して一連のリビジョンを指定する必要があった場合、コマンドを実行するだけで十分です。
#svn merge svn://svnserver/var/bump/trunk
SVNはすべてを理解します。
--- Merging r154 through r155 into '.':
U app/view/blogs/view.tpl.html
2番目の便利な変更は、変更をトランクにコピーすることです。 繰り返しになりますが、SVNは私たちをusしみなく扱い、トランクにない変更のみをコピーします。
svn merge --reintegrate svn://svnserver/var/bump/branches/my-branch
このコマンドは、ブランチをトランクにマージします。 繰り返しますが、不必要な動きはありません。すべてが非常に簡単です。
--record-onlyオプションは、リビジョン範囲をマージ済みとしてマークするために使用されます。 つまり、次回svnはこれらのリビジョンからブランチに変更をコピーしようとしません。
#svn merge -r155:157 --record-only svn://svnserver/var/bump/trunk
これで、リビジョン範囲155:157からのすべての変更は無視されます。
svn logおよびsvn blameコマンド用の追加オプションが登場しました
svn log --use-merge-history --limit 3
------------------------------------------------------------------------
r155 | rvk | 2008-11-24 15:22:04 +0300 (, 24 2008) | 1 line
Merged via: r156
fixed small bug
------------------------------------------------------------------------
r154 | rvk | 2008-11-24 14:15:29 +0300 (, 24 2008) | 1 line
new branch named new_design
------------------------------------------------------------------------
そしてもう1つの便利なオプションsvn mergeinfoを使用すると、どのリビジョンが既に見つかっているかを確認できます。
#svn mergeinfo svn://svnserver/var/bump/trunk
または、どの変更をトランクからコピーできますか:
#svn mergeinfo svn://svnserver/var/bump/trunk --show-revs eligible
いつものように、詳細は
svnbookで読むことができます