19

バージョン管理システムのチェックアウト/編集/チェックイン スタイルから Subversion への移行を検討しています。評価中に、TortoiseSVN (およびおそらく Subversion クライアント?) で Update アクションを実行すると、編集中のファイルに適用する必要があるリポジトリ内の変更が競合を引き起こさない場合、それらは自動的に/サイレントにマージされます。

このマージによって、コンパイル エラーは発生しませんが、少なくとも、簡単には検出できない論理エラーが発生する可能性があるため、これは少し怖いことです。

非常に単純な例: メソッドの後半で一部のロジックを変更する C# メソッド内で作業しており、他の誰かがメソッドの開始時に変数が初期化される値を変更しています。他の人の変更は、私が取り組んでいるコード行には含まれていないため、競合は発生しません。ただし、メソッドの出力を劇的に変更することは可能です。

私たちが期待していたのは、マージが必要な場合に、2 つのファイルが表示され、少なくとも単純な変更の承認/拒否オプションが表示されることです。これにより、少なくとも何かが変更されたことを認識し、コードに影響を与えるかどうかを確認するオプションが与えられます。

Subversion/TortoiseSVN でこれを行う方法はありますか? それとも、現在の作業方法に行き詰まりすぎているので、そのままにしておく必要があります...

4

5 に答える 5

14

FAQ にあります: Subversion が自動マージを行わないようにするにはどうすればよいですか?

  1. TortoiseSVN->Settings->General->Subversion 構成ファイルで、編集ボタンをクリックします。
  2. [helpers]追加してセクションを変更します

      diff-cmd = "C:\\false.bat"
    

    (二重のバックスラッシュに注意してください)

  3. 2 行を含むファイル C:\false.bat を作成します。

      @type %9
      @exit 1
    
于 2011-10-06T10:25:13.320 に答える
10

TortoiseSVN のトリックは次のとおりです。

Subversion で「自動マージ」をオフにする方法

svn.exe の秘訣は、svn 外部差分ツールを常に失敗するプログラムに設定することです。

svn --diff-cmd=/bin/false

外部差分プログラムが失敗した場合、svn は競合は解決できないと判断し、マージしません。

于 2008-09-10T11:42:48.837 に答える
6

これを回避する最善の方法は、開発者を教育することです。TortoiseSVN で更新を行うと、影響を受けるファイルのリストが表示されます。各ファイルをダブルクリックするだけで、それらの差分が表示されます。次に、バージョンと最新のリポジトリ バージョンの間で何が変更されたかを確認できます。

于 2008-09-10T12:09:28.883 に答える
1

可能であれば、自然なSubversionモデルの操作方法を学ぶことをお勧めします。実際には、競合はまれであり、あなたが話している種類のロジックの競合はほとんど存在しません(リポジトリで過去4年間のインスタンスを思い出せません)。

チームメンバーは、変更を1回だけチェックインするために丸一日の作業をまとめるのではなく、(正確さを維持しながら)可能な限り小規模でチェックインする必要があります。これにより、他の人の作業を踏む可能性が低くなります。

行っている特定の変更について懸念がある場合、Subversionは、ファイルに対する他の変更を防ぐためのロックメカニズムを提供します。ロックに関するレッドブックの章を参照してください。

于 2008-09-10T12:15:31.240 に答える