
ここ何年か、なんとなく使ってはいるけどちゃんとした使い方ができているか自信がなかったので、
Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)を読んでみました。ちなみに実際に図書館で借りたのは第1版で、現在の Subversion の挙動とは若干違うような感じもしましたが大まかなところは問題ないはずです。以下、恥ずかしながらも今回読んでみるまで知らなかったことや改めて納得したことなど。
- リビジョン番号 :
リビジョン番号はファイルごとにではなくリポジトリ全体につく。つまり「trunk/foo.py の r123」ではなく「r123 の trunk/foo.py」。このファイルを編集してコミットしたときに上がるリビジョン番号は、このファイルのリビジョン番号ではなくリポジトリ自体のリビジョン番号。
- 競合 :
チェックアウト/コミットのタイミングによって同一ファイルの変更が重なることを競合と呼ぶ。変更個所が異なる場合は svn update コマンドで解消されるので再度コミットすれば大丈夫なはず。
- 衝突:
変更個所が重なって競合が起こることを衝突と呼ぶ。このときは前の変更者とちゃんとコミュニケーションを取りつつ解決にあたる。
- 衝突の解決 :
この本の第1版では衝突が起こった場合はリソースの再変更などで問題を解決し、 svn resolved コマンドの後コミットとある。けど、現行の Subversion ではサブコマンドが表示されるのでそれに従えば大丈夫そう。
- リリースの流れ :
trunk から svn copy コマンドでリリースブランチを作成し、ここでリソースの調整が済んだらコミット。続いてこれを svn copy にてリリース版としてタグ付け。リリースブランチにて trunk からの変更があればその変更を trunk にマージする。
最近だと Git や Mercurial を使うのが流行でそれはそれで良いと思うのですが、プロジェクトや組織で使っているのが Subversion で、それを使っていて特に問題が無いのであればそれを使った方が良いと思っています。そのためにもちゃんと使えるようになってないとですね。なお、個人プロジェクトの管理や組織でもバージョン管理システムがそもそも使われていないとか、何か問題があってそれを解決できるのであれば Git などを使うのはもちろん良いんだろうと思います。
Posted by setomits at 13:12 |
Comments: 0