Edited at

今日から始める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


その他の参考文献