Subversion
svn

今日から始めるSubversion

More than 1 year has passed since last update.

そんなにころころ変わるものでもないけど2017年版。

Subversion (SVN) とは

Gitが流行る前に主流だったバージョン管理ツール。
もちろん現在もあらゆる現場で使われている。

Gitとの大きな違いはそのファイル管理方式だが、使い始める上では特に理解する必要はない。

名称 ファイル管理方式
Subversion 集中型
Git 分散型

利用フロー

一般的なワークフローは本流のTrunkと作業用のBranch、リリース用のTagを分離して利用するケースが多い。

20170327-SVN.png

  1. TrunkからBranchを作成
  2. Branchでファイルを変更
  3. 変更をCommit
  4. (2-3を繰り返し)
  5. 開発が完了したら、BranchをTrunkにMerge
  6. TrunkからTagを作成
  7. Tagからリリース

用語

太字の用語さえ理解していればなんとかなる。
それぞれの用語の和訳を理解していれば大抵想像がつくようになっている。

名称

名称 読み 直訳 説明
Repository リポジトリ [貯蔵所、倉庫] TrunkやBranchなどすべてを包括するもの。
Trunk トランク [(木の)幹,樹幹] そのプロジェクトの最新のソースが管理されるベース。基本的にTrunkを直接変更してはならない。
Branch ブランチ [(木の)枝] 開発を行う際に作成される作業ワーク。
Tag タグ [付け札] リリースバージョン。後で差し戻しなどを行えるよう、リリース時点のTrunkの状態を保存しておくためのもの。
Revision リビジョン [改訂、修正] Commitを行った時点(セーブポイント)のこと。r1234 などと表記され、数値が増えていく。後からこの地点に戻したり、リビジョン同士で差分を出したりすることができる。

操作

操作名 読み 直訳 説明
Commit コミット - 保存する・セーブポイントを作る。この操作を行うとRevision番号が上がる。
Merge マージ [併合する] SVNでは大抵BranchをTrunkに取り込むことを指す。分岐した枝(ブランチ)をひとつに戻すということ。
Revert リバート [戻す] 指定したRevisionの状態に戻す。
Checkout チェックアウト - Branchなどをローカルに持ってくる、最初に行う操作。
Export エクスポート - ソースをローカルなどにダウンロードする。Checkoutと違う点は、コミット情報を持たない生のファイルのみを保存するというところ。

SVNで開発を行う上でやってはならないこと

開発中Branchがある状態で、Trunkに直接変更を行いCommitする。

BranchをTrunkにマージできなくなったりする。
解決法はあるが大抵面倒なことが発生するのでやらない方が良い。

ツール

TortoiseSVN
基本これを使ってチェックアウトやコミットなどを行う。 Tortoise はトータスと読む。

Tips

マージ操作

Branch開発中にTrunkが更新された場合に、開発BranchにTrunkを取り込む場合はマージを使う。
(ここではTortoiseSVNを使う前提で説明する)

まずはマージしたいBranchを選択してSVNメニューの マージ(M)... を選び、次のように進めていく。

項目
マージタイプ リビジョンの範囲をマージ
マージ元のURL TrunkのURL
マージするリビジョンの範囲 すべてのリビジョン
マージオプション お好みで

ここでマージに問題が無ければすんなり通るが、コンフリクト(競合)が発生した場合は警告が出力される。コンフリクトが発生した場合には人間が手動でファイルの差分を確認しながら1行ごとにマージ作業をしなければならない。

この時TortoiseSVNは、「Trunkのファイル」「Branchのファイル」「作業コピー」の三種類のファイルを自動生成する。最終的な目標はTrunkとBranchのファイルを正しくあるべき状態で保存し、それを作業コピーとしてコミットすることだ。

マージ作業にはWinMergeなどのツールがよく利用されるが、ともかく作業コピーにあるファイルの状態を正しいものに修正し終えたら、TortoiseSVNのメニューから対象ファイルを 競合の解決(O)... から解決マークを付ければ競合の問題は解消されたことになる。

参考リンク: TortoiseSVN/競合してコミット出来ない時には - tracpath.com

その他の参考文献