第6回 デザイナーと学ぶプログラミング@Subversionその3

こんにちは!デザイナーの橋浦です。
今回は前回で紹介しきれなかった部分や、Subversionを使う上で気を付けたいことなどを紹介できればと思います。
また短い間ですがお付き合い頂ければ幸いです!

 

コミット、アップデート時に気を付けたいこと

前回はテストということで、共有者がいない前提でお気軽にコミットしました。
 
が!!実際Subversionを使って作業をするということは、複数人でファイルを更新していて常に変わっているシュチュエーションが十分に考えられます。
そうした場合は、ある程度コミットには注意が必要です。
その注意すべきこととは、
 

ファイルの競合

 
これに尽きるかと思います。
ちなみにファイルの競合とは、複数人が同じファイルの同じ行をそれぞれ編集してしまったために発生する、マージ上のトラブルのことです。
 
Subversionはバージョンが残るので、例えデータが競合しても大惨事になることは少ないと思いますが、トラブルは起こらないに越したことはありません。
 
ファイルの競合を起こさないためには、
 
・共有者同士での連絡をしっかりし合い、なるべく同じファイルには同時に触らない。
・また、やむを得なく同時に触る場合でも、担当箇所をきちんと決め、同じ部分を編集しないようにする。
 
この二点に気をつければ、競合はほとんど起こらないor起こっても非常に軽微で修正が容易になるかと思います。
 
また、アップデート時には、こちらの変更がちゃんとコミットされていないとファイルの削除等の変更が元の状態に戻されてしまうので、アップデートもきちんと確認をした上でやる方が間違いないです。
 

もしファイルが競合してしまったら

とはいえ、気を付けていてもファイルが競合してしまうことはあります。
もし競合してしまった場合、Subversionでは競合箇所を教えてくれます。
 

アップデートしたら競合してしまいました。

アップデートしたら競合してしまいました。


競合が発生すると、コミット時にエラーが発生し、別途3つのファイルが生成されます。
1、(ファイル名).mine
2、(ファイル名).r○○○(○○○は旧リビジョン番号)
3、(ファイル名).r●●●(●●●は新リビジョン番号)
 
1は、作業コピーをコミットする前に存在した変更点ファイル(変更点のみが入っている)
2は、変更を行う前にリポジトリに存在したファイル
3は、コミットをした際にリポジトリに存在した最も新しい更新ファイル
です。
 
これらは再度コミットをする際に消す必要がありますが、コードの差異(競合した部分)を知るために重要なファイルです。
これらを参考にして再度コミットができるよう元のファイルを編集しましょう。
 
===で区切られてる上が元のファイルでの状態で、下がリポジトリの最新の状態です。

===で区切られてる上が元のファイルでの状態で、下がリポジトリの最新の状態です。


また、元のファイルには、競合した箇所に以下のような印がついています。
<<<<<<< .mine
(自分で変更した内容)
===========
(リポジトリの最新の内容)
>>>>>>> .(revision)
この箇所を最新のものと比較し、修正しましょう。
 
編集が終わったら3つの生成されたファイルを削除し、My projectのresolvedを選択。
問題が解消されたら、再度コミットしましょう。
 

今回はここまで

今回はファイルが競合した際の対応についての記事となりました。
次回はまた違う部分のご紹介ができればと思います。
ここまで読んで頂きありがとうございました!
 

参考にさせていただいたサイト様(敬称略)

130単位
http://d.hatena.ne.jp/deeeki/20080825/svncollision
TortoiseSVN
http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/tsvn-dug-conflicts.html