5

トランクからブランチへの変更をマージしています。これを行っている間、マージ情報が記録されます。

ブランチに他の変更がある可能性があるため、マージによって影響を受けるファイルのみをコミットする安全な方法はありますか (他に変更がないことを前提としています)、マージのプロパティ/情報はありますか?

" リビジョン 'r1' をトランクからブランチにマージするとします。'r1' のトランクからブランチにマージします。'r1' の場合、ブランチ フォルダにマージ情報が記録されます。ブランチの svn diff では、「.」が表示されます。が変更され、'r1' がマージ プロパティの一部であることを示しています。'r1' というマージ プロパティとともに、'r1' のみがマージされたために変更されたファイルをコミットするにはどうすればよいですか?」

4

2 に答える 2

2

TortoiseSVN のような SVN クライアントを使用している場合、通常のマージでmergeinfoは、ルート フォルダーのフォルダー プロパティとして自動的に更新され、ファイルのリストをコミットする際にプロパティが変更されたフォルダーがリストされます。

これがコミットに対して自動的に行われない場合、TortoiseSVN クライアントを使用している場合は、手順に従って手動で行うこともできます (rootmytaskとして、現在のタスク ブランチsubtaskとして、現在のブランチから既にマージされたバック ブランチとして、programsおよび各ブランチのコード フォルダー):

  1. programsブランチの作業コピーのフォルダを右クリックしmytask、オプションを選択しますTortoiseSVN-->Properties
  2. 以前に記録したことがある場合は、新しいウィンドウに次のような値を持つmergeinfoプロパティが一覧表示されます。svn:mergeinfo

    ルート/プログラム:1-489

    ルート/タスク/mytask/タスク/サブタスク/プログラム:380-410

    その後、次の手順を実行できます。

    a) svn:mergeinfo アイテムを選択して、ウィンドウで [編集] --> [詳細設定] オプションを選択し、コミットする mergeinfo を更新して [OK] をクリックします。

  3. 新しいウィンドウで、以前の がない場合はmergeinfo、次の手順に進むことができます。

    a) オプションを選択しますNew-->Advanced

    b)svn:mergeinfoドロップダウン リストから選択しmergeinfo、値のテキスト ボックスに適切な値を追加して保存します。

  4. フォルダーをクリックしてSVNコミットを実行すると、ファイル内のフォルダーprogramsがリストprogramsされ、プロパティの変更のみでコミットされ、コミットできます。

一方で

親から作業コピーへのマージ中にマージされたファイルのみをコミットし、ローカルで変更された他のファイルをコミットしないようにする場合、これを直接行う方法はありません。間接的な方法は、タスク ブランチ ( ) の 2 つの別々の作業コピー (copy1 と copy2 としましょう) を保持mytaskし、次の手順を実行することです。

  1. copy1ローカルのすべての変更が行われているので、しばらくそれを脇に置いておくことができます
  2. SVNcopy2は、ブランチの新しい作業コピーをチェックアウトします。
  3. 親からの変更をマージしてcopy2コミットします。これにより、マージされた変更のみが必要なすべてのものとともにサーバーにコミットされますmergeinfo
  4. 次に、に移動しcopy1、SVN 更新を実行すると、サーバーからこの作業コピーへの新しいマージされた変更が取得されます。(マージ中に更新され、ローカルの変更中にも変更されたファイルがある場合、この SVN の更新中に競合します)。競合を解決すると、ローカルの変更を続行できます。
于 2013-04-05T07:22:38.730 に答える
1

これは古いトピックですが、同様のものが必要であり、stackoverflow で何も見つからなかったので、ここに私の見解を示します: 「svn commit --depth=empty folder_with_mergeinfo merged_files」を使用します。

私の場合、2 つのブランチをマージしていました。「svn ci ブランチ」を実行しようとすると、そのブランチで変更されたすべてのものをコミットしようとします。--depth=empty を使用すると、フォルダーのマージ情報と必要なファイルのみがコミットされます。

于 2014-08-22T08:09:21.213 に答える