こんにちは。エクセルソフトの田淵です。
先日 テスト用に Linux で Subversion を最速で最低限の設定で稼働させる方法 - Qiita こんなエントリーを書きましたが、これは Xamarin Studio と Visual Studio で svn などの VCS システムでコンフリクトが発生した場合にどう対処するのか?の調査に svn が必要だったからです。こちらが本編です。
Git では試していないのですが、分散管理だからまた別の感じになるのかもしれません。
Windows と Mac で同じレポジトリを見ていて、両方の環境で同じ行を編集してそれぞれで Commit すると、コンフリクトが発生します。Visual Studio が後に Commit したケース、Xamarin Studio が後に Commit したケースを試してみました。
Visual Studio でコンフリクトを解決する方法
Visual Studio が後だった場合です。開発者の皆様であればご存知かと思いますが XS との比較のために一応動作を記録しておきます。
Visual Studio には VisualSVN をインストールしています。
Commit が失敗します。
Update する?と聞かれるので Update します。
VS で何が変わってるのかなどをチェックできます。
ソリューションエクスプローラーから赤く印が付いているファイルを右クリックし ``Edit Text Conflicts``` を選択します
赤い列のチェックボックスを付けるとどっちを採用して結果どうマージされるか?が下のペインでわかるようになっていますので、左上の
マージの許可
からマージしてコンフリクト解消です
手順が分かってさえしまえば簡単ですね。分割ビューでチェックできるのもステキです。
Xamarin Studio でコンフリクトを解決する方法
Commit が失敗します。
(どうやるか忘れてしまった…ッ!再確認して更新します。)何かしてこの画面にして、対象ファイルを右クリックして
更新
をクリックします。(上にある最新の状態に更新
ではなぜか更新出来ないっぽいです…)ソリューションからファイルを開くと Visual Studio と同じように何が競合しているのかが分かります。
下の方に Merge というタブが見えるのでクリックすると、やはり Visual Studio と同じようにどの部分でどちらを反映させるか?を
>>
や<<
で選べる感じがします。よね…?ッ…!!!!!?????
バグなのか、仕様なのかは分かりませんが、2015/2/8 現在の Xamarin Studio ではマージは出来ないようなので、3. の時点でどちらを採用するかを確認し、別のファイルに変更内容をコピーした後で、Revert file
でファイルを戻して、手動で変更内容をアップデートする必要があるようです。
バグっぽいですよねぇ… 報告されてるか?などは確認して追記します。
2015/3/11 追記
Bug 27762 – [SVN] When we try resolve the conflict by merge, the XS throws MonoDevelop.VersionControl.Subversion.SubversionException: Commit failed に追加してもらいました。バグみたいです。
Xamarin 気になった方は
是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
以上です。