リポジトリ利用上の注意
- リポジトリのURLとID、パスワードは定期的に電八開発倶楽部MLに配信されます。
- マイナーバージョンごとにtrunkが分かれています。
- ソースアーカイブと同じ物が
/release/
フォルダにあります。 - パッチ投稿はパッチ用のタグフォルダ
/patches/
上にタグを作成することで行います。パッチ投稿方法についてはこちら →submit patch - パッチ開発の作業用ワークブランチは
/branches/
上に作成して下さい。必要があれば専用のアカウントを発行します。
subversionの入手先
ここで紹介するものは何れも無料で使用できます。
apache Subversion
コマンドラインクライアントとサーバーです。
- subversion 公式サイト
subversioinは2010年2月17日より、Apache Software Foundation のプロジェクトになりました。
- バイナリパッケージ CollabNet Subversion、tigris.org、SilkSVN はクライアントも有りますが、VisualSVNはサーバーのみです。
TortoiseSVN
シェルエクステンション型GUIクライアント。32bit版と64bit(x64)版があります。シェルエクステンションなので、64bit(x64)版Windows上で32bit版をインストールすると普段のエクスプローラーで見えないので注意して下さい。
- TortoiseSVN 公式サイト
- ダウンロードページ TortoiseSVN-X.X.X.msi をインストールして下さい
その他のクライアント
- RapidSVN
- stand-aloneクライアント
- AnkhSVN
- VisualStudioアドイン
- eSVN
- stand-alone(Qtベース)のクライアント
- Subclipse
- Eclipseのプラグイン
- Subversive
- Eclipseのプラグイン
- SmartSVN
- Java版クライアント(foundation版)
- sventon
- Java版クライアント
- pysvn WorkBench
- Python版クライアント
参考文献
- Subversionによるバージョン管理
- 基本。
- UNIX USER 2003 8: Subversionで管理せよ (draft)
- CVSをある程度知っている人が対象だけど、殆ど知らなくてもお薦め。
- TortoiseSVN(日本語)
- TortoiseSVNの使い方以外の部分も解説してあるので、こっちだけでも良いです。
ミニマムガイド
CVSの経験がない方のための超入門
- リポジトリ(サーバー)からファイルを手元に取り出すことを checkout と言います。
- 手元に checkout したファイルを作業コピーと呼びます。
- 作業コピーに加えた変更をリポジトリに反映することをコミット(commit)と言います。
- コミットしたファイルはいつでも過去にコミットした時の状態で取り出すことが出来ます。これが即ちバージョン管理です。
- コミットするとその時のバージョンを指す番号(リビジョン)が付きます。
- 作業コピーにリポジトリのファイルの内容を反映することを update と言います。
- 作業コピーをcheckoutしてからリポジトリに変更がコミットされたかも知れません。作業コピーをリポジトリの最新の状態に更新(update)するということです。
- 作業コピーに変更を加えていた場合、リポジトリにコミットされている変更がマージ(merge)されます。
- ファイルをバージョン管理しない状態に取り出すことを export と言います。
- あるバージョンに付けた目印を タグ(tag) と言います。
自動的に付くタグがいくつかあります。- HEAD:作業コピーに対するリポジトリ上の最新リビジョンを指す
- BASE:作業コピーの元になっているリビジョンを指す
- バージョン管理の中心となるフォルダを trunk と呼びます。
- trunkに平行してバージョン管理するフォルダをブランチ(branch)と呼びます。
- リポジトリは仮想的なファイルシステムです。
- ローカルのディスク上でファイルやフォルダをコピーするような感覚で使えます。 現在の状態のファイルを残しておくのが tag 、平行して別の変更を加える為のコピーが branch です。
- リポジトリ上でコピーを行ってもファイル内容がコピーされるわけではないので、ディスク容量を気にする必要はありません。
CVSの経験がある人のための超入門
- CVSで言うタグもブランチもリポジトリ上でコピーすることにより表現されます。 →copy サブコマンド
- 多少の違和感を覚えると思います。ブランチしかない、と考えると多少理解しやすいでしょう。
- GUIクライアントには大抵、タグやブランチのための専用のUIが有るので、使用上の差異はあまりありません。
- コピーですから、HEADリビジョンは各々のコピー毎にあります。つまり、ブランチの作業コピー上でHEADリビジョンはそのブランチの最新リビジョンを指し、trunkを指しません。
- リポジトリを変更すると、リポジトリ全体のリビジョンが更新されます。ファイル毎ではありません。
- タグを作成しなくても、リビジョンを指定して取り出せば全てのファイルがそのリビジョンの状態(所謂チェンジセットに相当)で得られることになります。この点でCVSのタグに近いものです。
- フォルダが管理されます。
- リネーム、移動が出来ます。 →move サブコマンド
- コミット前の変更の取り消しが出来ます。 →revert サブコマンド
- updateすると現在の作業コピーにマージが発生するのは同じですが、マージには専用のコマンドがあります。 → merge サブコマンド
- 作業コピーのBASEを別のリビジョン・タグ・ブランチに移動するために専用のコマンドがあります。 →swicthサブコマンド
注意事項
- 間違ってルートやbranchやtag等の複数のフォルダを含むフォルダをチェックアウトすると、全部チェックアウトされますよ。