36

私はおそらくこれを熟考したことがないか、Subversion にすでに存在するオプションを単に知らないだけかもしれません (私は確かに専門家ではありません)。

新しい機能の作業を開始するためにブランチを作成した場合、トランクの最新のリビジョンでブランチを最新の状態に保つ簡単な方法があれば、リビジョンの範囲をマージします。コミットした変更はブランチにのみ影響しますが、トランク (およびもちろんブランチ)からすべてのリビジョンを簡単に更新して取得できるようにしたいと考えています。これは可能ですか?私が求めていることは理にかなっていますか?

これは、ある範囲のリビジョンをマージすることと必ずしも変わらないと思います。マージを許可する前にこれらすべてのベストプラクティスチェックを実行する AnkhSVN を使用しているだけで、必要以上に複雑に感じることがあります。アイデアは、他の開発者がトランクに対して行う可能性のあるコミットでブランチを最新の状態に保ち、最終的にブランチをトランクにマージしたときにすべてがスムーズに (可能な限り) 進むようにすることです。

4

5 に答える 5

34

最新のトランク チェックインでブランチを最新の状態に保つことをマージと呼びます。

マージが王室の悪夢になることもあることは知っていますが、これがまさにマージです。

于 2010-03-03T15:22:48.750 に答える
25

TL;DR; いいえ、マージする必要があります。ここにいくつかの手順があります

あなたが思っているほど悪くはありません。私が使用するコマンドラインからの手順の概要を説明します。私は vimidiff を使用して競合を管理します。Meld または他の diff ツールを使用できます。コマンドの前にはハッシュ '#' マークが付きます

<in branch first time from copy>
# svn log --stop-on-copy | tail 
<read the revision that was the copy instruction in this case r229>
# cd ../../trunk
# svn up
<I make note of the latest rivision which is r334>
<now I go back to the branch>
# cd ../branches/branch 
# svn merge -r229:334 svn://url.to.svn.server/project/trunk
<a whole bunch of stuff happens>
< now I check for conflicts >
# svn status | grep ^C
<which outputs something like>
C       public/tools/Diagnostic.class.php
C       public/domain/Report_Setup_Parameter.class.php
C       public/modules/mReports.module.php
<I now revert all these and manually merge them>
# svn revert public/tools/Diagnostic.class.php
...
<revert done now manuall doinng the merge
# vimdiff public/tools/Diagnostic.class.php ../../trunk/public/tools/Diagnostic.class.php
...
<now all the changes are done>
# svn commit -m "Merging trunk into branch 'branch' r:229:334"
commited revision 335

完了しました。定期的に行うと、多くの変更はありません。最初のマージの後、最後のマージのリビジョン番号を使用する必要があります。したがって、将来のある時点で、コマンドは svn ログを調べて、最後のマージのリビジョン (この場合は 335) を見つけます。マージ コマンドは次のようになります。

# svn merge -r335:370 svn://url.to.svn.server/project/trunk

他のすべての手順は同じです。

于 2010-03-03T15:36:05.537 に答える
3

アイデアは、他の開発者がトランクに対して行う可能性のあるコミットでブランチを最新の状態に保ち、最終的にブランチをトランクにマージしたときにすべてがスムーズに (可能な限り) 進むようにすることです。

これを実現するには、トランクから範囲とリビジョンのマージを行う必要があります。実際、この種のブランチへのマージを時々実行して、トランクで何が起こっているかを最新の状態に保つことをお勧めします。

AnkhSVN のツールについては知りませんが、「純粋な」SVN には、マージ操作を非常に簡単にする非常に優れたツールがあります。TortoiseSVNは Windows 用の優れたツールであり、Netbeansが好きなら、マージ用の非常に優れたグラフィカル サポートもあります。

于 2010-03-03T15:21:22.323 に答える
0

PHPStorm を使用している場合は、GUI インターフェイスを使用して試すことができます https://www.jetbrains.com/help/idea/2016.1/integrating-changes-to-from-feature-branches.html

于 2016-05-31T13:57:27.547 に答える
0

私はAnkhSVNに精通していませんが、あなたが説明していることはまさにそのsvn merge目的です。したがって、あなたの質問に対する答えはノーです。

ただし、--reintegrateオプションをチェックして、それがあなたの人生を楽にするかどうかを確認してください.

次のブログ投稿を参照してください。

Subversion マージの再統合
Subversion 1.5 マージ追跡の概要

于 2010-03-03T15:21:16.367 に答える