最終更新日: 2017-02-12 日 21:21
ホーム | 文書トップ | 目次

Subversion

Table of Contents

解説書

まずは、svnbookを読むべき。 [Diary2007.html#svnbook]] を参照のこと

下記ページでは、Subversionのマニュアルの内容をピックアップして解説をまとめられている。

サーバへのインストール及び設定

概要

ここでは、Linux(Debian)をサーバとして、WebDAV経由で使用する場合について解説する。

インストールするパッケージ

Debian の場合、subversion と libapache2-svn を入れれば良い。

  • etchの時
    • subversion (1.4.2dfsg1-2)
      • libneon26 (0.26.2-4)
      • libsvn1 (1.4.2dfsg1-2)
    • libapache2-svn (1.4.2dfsg1-2)
  • lennyの時
    • subversion (1.5.1dfsg1-4)
      • libneon27-gnutls (0.28.2-6.1)
      • libserf-0-0 (0.2.0-1)
      • libsvn1 (1.5.1dfsg1-4)
    • libapache2-svn (1.5.1dfsg1-4)

設定

WebDAV

  • /etc/apache2/mods-avalable/dav_svn.conf に設定する
  • 認証ファイルは、上記設定ファイルのサンプルでは /etc/apache2/dav_svn.passwd に設定しているのでそれに従う。
$ sudo htpasswd -c /etc/apache2/dav_svn.passwd ユーザ名
New password:
Re-type new password:
Adding password for user ユーザ名
  • ここでは、認証要の /svn と認証不要の /svn2 を配置している
  • Require valid-user とすると、全てのアクセスに対して認証を要求する
  • リポジトリのパスは、SVNPath で設定する方法と SVNParentPath で設定する方法がある
  • SVNPath の場合は、一つのリポジトリのみ。SVNParentPath では、その下に複数のリポジトリを置くことができる
  • SVNParentPath を使用した場合 SVNListParentPath on とすると、Webページとして参照した場合に、リポジトリのリストが表示される
<Location /svn>
  DAV svn
  SVNParentPath /var/lib/svn
  SVNListParentPath on
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>
<Location /svn2>
  DAV svn
  SVNParentPath /var/lib/svn2
  SVNListParentPath on
</Location>

注意点

  • リポジトリは、apache2が書き換え可能である必要がある
  • Debianだったら、所有を www-data にしておく
$ sudo chown -R www-data.www-data リポジトリ
  • 設定後は、apache2 の再起動が必要
/etc/init.d/apache2 restart

リポジトリの作成方法

コマンド

  • 「svnadmin create リポジトリ名」を実行する
  • 上記の設定の場合であれば、svn 又は svn2 以下で下記を実行する
$ sudo svnadmin create リポジトリ名
$ sudo chown -R www-data.www-data リポジトリ名

サーバ上で(クライアントとして)リポジトリを参照する方法

$ svn list file:///var/lib/svn/リポジトリ名

リポジトリへのプロジェクト作成方法

コマンド

(注意)下記は、クライアントから実行する場合

$ svn import http://IPアドレス/svn/リポジトリ名/プロジェクト名 -m"コメント"

<a name="subversion_lock" id="subversion_lock">

Subversionのロックについて

ロックの使用方法

  • バージョン 1.2以降ではロックを使うことができる
  • 各ファイルに needs-lock 属性をつければ、必ずロックしないとコミットできないようにすることができる
    • 上記は間違い
  • needs-lock属性が設定されている場合
    • ファイルはread-onlyになる
    • ロックした時にファイルシステム上のread-only属性が解除され、編集が可能になる。
      • つまり、「ロックしないと編集可能にならない」→「ロックしないとコミットできない」という感覚でファイルを扱うことができる
      • ただし、ファイルシステム上のread-only属性を手動で解除した場合でも、コミットできてしまう ので、「ロックしないとコミットできない」わけではない
    • ロックが開放されると、ファイルはread-onlyに戻る
  • 下記コマンドにより、needs-lock 属性をつけることができる。この後 コミット する必要がある
$ svn propset svn:needs-lock '*' ファイル名

自動でneeds-lock属性を付ける方法

  • サーバ側で行うことはできない
  • クライアント側では、auto-props を使うことで可能
  • TortoiseSVNだったら、右クリック -> TortoiseSVN -> 設定
  • 「一般」の Subversion の設定ファイル 「編集」 のボタンを押すと config ファイルが開くのでこれを編集する
  • config は、Windows XPならば Documents and Settings\ユーザ名\Application Data\Subversion にある
[miscellany]
enable-auto-props = yes

[auto-props]
*= svn:needs-lock

Emacs(Meadow) で使用する場合

vc-svn.el

Meadow2のversion-controlはデフォルトでは対応していない。ソースをダウンロードし、contrib\client-side\vc-svn.el をsite-lispに入れ、.emacに下記を記述する。

(add-to-list 'vc-handled-backends 'SVN)

psvn.el

vc(vc-svn.el) ではロックができなさそう。コマンドが無い。それでちょっと探していたら、vc-svn.el 以外にも psvn.el というのがあることがわかった。 見落としていたが、これもソースに入っていた。(contrib\client-side\psvn\psvn.el) 下記設定で有効になるが、結構インタラクティブに実行するものらしく、使い易いかどうか、まだ判断できていない。

(when (locate-library "psvn")
  (require 'psvn)
  )

Subversionリポジトリのバックアップについて

ホーム | 文書トップ | 目次
Created by Emacs 27.1 (Org mode 9.3)