web-dev-qa-db-ja.com

Tortoise SVN:「theirs」を使用して競合を解決します。どういう意味ですか?

競合するファイルに対するTortoise SVNの次の2つのオプションの違いについて説明してください。

  • 「それら」を使用して競合を解決します。
  • 「mine」を使用して競合を解決します。

サイドノートに。なぜこの用語のバグとしての混乱した使用を誰も報告したことがないのですか?

72

「それら」を使用して競合を解決すると、競合する編集がある2つのファイルをチェックインしようとすると、SVNは変更を破棄し、代わりに他の人の変更を使用します。

「mine」を使用して競合を解決するとは、変更を破棄し、代わりにファイルのバージョンを使用することを意味します。

54
Brandon

さらに参照するためにリスト全体を追加したかったのです。

(e)  edit             - change merged file in an editor
(df) diff-full        - show all changes made to merged file
(r)  resolved         - accept merged version of file

(dc) display-conflict - show all conflicts (ignoring merged version)
(mc) mine-conflict    - accept my version for all conflicts (same)
(tc) theirs-conflict  - accept their version for all conflicts (same)

(mf) mine-full        - accept my version of entire file (even non-conflicts)
(tf) theirs-full      - accept their version of entire file (same)

(p)  postpone         - mark the conflict to be resolved later
(l)  launch           - launch external tool to resolve conflict
(s)  show all         - show this list
41
nerkn

同意する。

それが言った場合、それはより明確になると私には思えます:

  • リポジトリを使用して解決する(それら)
  • 作業コピーを使用して解決する(私の)
32
james2code

BuzzAnnは正しいです。 mine vs theirsは曖昧です。リポジトリにあるものも私のものかもしれないからです。明確な区別はリポジトリとローカルコピーです。

7
Dave Sieving

SVNコマンドラインマージは、特にブランチをトランクにマージするときに混乱します。 「私の変更」はブランチで行った変更ですが、それはSVNに従って間違っています。物事を本当に複雑にするために、SVNはパスをSOURCE、TARGET、およびコマンドラインヘルプのHEADと呼びます。

簡易回答、このマージステートメントを実行する場合ディレクトリC:\ Project1\Trunkから

svn merge -r 60:68 C:\Project1\branches\UpdatesToProject1

"Mine"はSVNが実行されているディレクトリ(C:\ Project1\Trunk)です。

「Theirs」は、マージするディレクトリであり、コマンドラインで指定したものです(C:\ Project1\branches\UpdatesToProject1)

SVNが、MINEとTHEIRSが参照するパスを提供してくれたら、本当に素晴らしいでしょう。

5
K Kimble

リポジトリ内にあるものがもはや(唯一)自分のものではないことを受け入れると、アクセスできるすべての人と共有され、より明確になる可能性があります。

このコンテキストでは:

「それら」とは、「リポジトリ内のチームの共有コード」を意味します。「私の」とは、(私の)「作業コピー」を意味します(おそらくローカルマシン上)

そのため、「それらを使用」は、作業コピーを共有コピーに置き換え、ローカルマシンに存在する変更を破棄します。作業コピーのコードがリポジトリに保持されるべきものであると決定し、現在リポジトリにあるものを破棄する「鉱山を使用する」。

1
ptarmigan