Subversion

Last-modified: 2008-06-30 (月) 11:07:38

Subversionに関する備忘録

Subversionに関してメモ

■Subversionについて

  • Subversionとは、複数のユーザーが共有する情報を一元管理するためのシステム。ユーザーは、情報の格納庫であるリポジトリにアクセスし、そのファイルを読み書きする。
  • Subversionのリポジトリは、変更内容を全て記録している。ファイルの変更から、ディレクトリの作成/削除/移動も記録している。

■ネットワーク経由でのリポジトリアクセス

  • Apache + WebDAV対応モジュール(mod_dav_svn)
  • Apacheなしで、SSHでも可能
    svnserve:単独で動作するコンパクトなサーバプログラム。独自プロトコルで通信

Subversionクライアント
ローカルでの作業コピーの管理
svn --version Subversionクライアントで利用可能なURLスキーマおよびプロトコルを表示

svnserve

  • 「svn://」または「svn-ssh://」で始まるURLを使ってsvnserveと通信する
  • 単独のデーモンとして起動する(-dオプションを付与)

■バイナリ差分アルゴリズム

■ブランチとタグ

ブランチ:ファイルやディレクトリ・ツリーに対して、別の変更の流れを作成すること。

タグ:リポジトリのある時点に対して、人間にわかりやすい名前を付けること。

作業コピー:リポジトリのファイルやディレクトリを読み込んで作成する自分専用の作業場所(ディレクトリ)

混合リビジョン:作業コピーの中に複数のリビジョンのファイルやディレクトリを混在させること。

ファイル共有対応

  • ロック・修正・ロック解除方式
    • 多くのバージョン管理システムで採用
    • リポジトリ中のファイルを変更できるのは、ファイルをロック人だけ。
    • 処理の流れ:Aさんがファイルをロック→修正作業→ファイルのロックを解除→Bさんがファイルをロック→・・・
  • コピー・修正・マージ方式
    • Subversion、CVSで採用
    • ユーザは、リポジトリを読み込んで、自分専用の作業コピーを作る。
      それぞれの作業コピーを使って、ファイルの修正を行う。
      →重複するファイルがあっても、並行して作業を行える。
      修正後、他者の修正箇所とのマージを行う。行うのはバージョン管理システム。ただし、最終確認は人の目である。
    • 同じ場所を修正していた場合は「衝突(コンフリクト)」。衝突がある場合、バージョン管理システムがその旨を通知してくれる。

作業コピーの作成

  • リポジトリ中のいずれかのサブディレクトリをチェックアウトする。
    チェックアウト=作業コピーを作ること
    (コマンド) svn checkout http://xxx.xxx.xxx/repos/sample
  • 修正したファイルを公開することをチェックインという。
    (コマンド) svn commit file1.txt
  • 作業コピーを更新する(最新化する)
    (コマンド) svn update

Subversionコマンド一覧

svn checkoutチェックアウトする
svn commit修正内容をリポジトリに登録する

インストール

  • インストーラの所在
    • http://subversion.tigris.org/ にアクセス
       ・「トップ」画面で[Windows binaries]を選択
       ・「Getting Subversion」画面で、[Binary Packages]の[Windows] -> [Tigris.org:Apache2.0 or Apache2.2]の[Apache2.2]を選択
       ・「ドキュメント&ファイル:Windows Apache 2.2.x」画面で、svn-1.4.6-setup.exe を選択
  • subversion: svn-1.4.6-setup.exe
    • とくに何の指定もせずにインストールを続行すればOK。