読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Xamarin Studio で svn のコンフリクトを解決する方法 (バグあり)

こんにちは。エクセルソフトの田淵です。

先日 テスト用に Linux で Subversion を最速で最低限の設定で稼働させる方法 - Qiita こんなエントリーを書きましたが、これは Xamarin Studio と Visual Studiosvn などの VCS システムでコンフリクトが発生した場合にどう対処するのか?の調査に svn が必要だったからです。こちらが本編です。
Git では試していないのですが、分散管理だからまた別の感じになるのかもしれません。

WindowsMac で同じレポジトリを見ていて、両方の環境で同じ行を編集してそれぞれで Commit すると、コンフリクトが発生します。Visual Studio が後に Commit したケース、Xamarin Studio が後に Commit したケースを試してみました。

Visual Studio でコンフリクトを解決する方法

Visual Studio が後だった場合です。開発者の皆様であればご存知かと思いますが XS との比較のために一応動作を記録しておきます。
Visual Studio には VisualSVN をインストールしています。

  1. Commit が失敗します。 tor02.png

  2. Update する?と聞かれるので Update します。 SvnConflict_VS02.png

  3. VS で何が変わってるのかなどをチェックできます。 SvnConflict_VS03.png

  4. ソリューションエクスプローラーから赤く印が付いているファイルを右クリックし ``Edit Text Conflicts``` を選択します SvnConflict_VS04.png

  5. 赤い列のチェックボックスを付けるとどっちを採用して結果どうマージされるか?が下のペインでわかるようになっていますので、左上の マージの許可 からマージしてコンフリクト解消です SvnConflict_VS05.png

手順が分かってさえしまえば簡単ですね。分割ビューでチェックできるのもステキです。

Xamarin Studio でコンフリクトを解決する方法

  1. Commit が失敗します。 xs_conflict01.png

  2. (どうやるか忘れてしまった…ッ!再確認して更新します。)何かしてこの画面にして、対象ファイルを右クリックして 更新 をクリックします。(上にある 最新の状態に更新 ではなぜか更新出来ないっぽいです…) xs_conflict02.png

  3. ソリューションからファイルを開くと Visual Studio と同じように何が競合しているのかが分かります。 xs_conflict03.png

  4. 下の方に Merge というタブが見えるのでクリックすると、やはり Visual Studio と同じようにどの部分でどちらを反映させるか?を >><< で選べる感じがします。よね…? xs_conflict04.png

  5. ッ…!!!!!????? xs_conflict05.png

バグなのか、仕様なのかは分かりませんが、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 リンクページ に参考資料を纏めてますので併せてどうぞ。

以上です。