subversion(SVN)でバージョン管理
subversionを構築してソースやドキュメントのバージョン管理を行う。
subversionはApache/SSL+WebDavで構築し、さくらインターネットのVPSでバージョン管理を行い、自宅または出先のUbuntuまたはWindowsから利用することにする。
今回やること
- subversionをインストール
- リポジトリを作成(初期設定)
- ApacheのSVNモジュールのインストールと設定
- Ubuntuからの使用(rapidsvn)
- Windowsからの使用(TortoiseSVN(トータスSVN)+WinMerge)
- ブラウザーからリポジトリを見てみる
- Subversionリポジトリのバックアップ方法
・subversionをインストール
aptitude install subversion パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 タスクの記述を読み込んでいます... 完了 以下の新規パッケージがインストールされます: libneon27-gnutls{a} libserf-0-0{a} libsvn1{a} subversion 更新: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。 2308kB のアーカイブを取得する必要があります。展開後に 6717kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] Y 拡張状態情報を書き込んでいます... 完了 取得:1 http://ftp.jp.debian.org lenny/main libneon27-gnutls 0.28.2-6.1 [121kB] 取得:2 http://ftp.jp.debian.org lenny/main libserf-0-0 0.2.0-1 [34.4kB] 取得:3 http://security.debian.org lenny/updates/main libsvn1 1.5.1dfsg1-7 [866kB] 取得:4 http://security.debian.org lenny/updates/main subversion 1.5.1dfsg1-7 [1287kB] 2308kB を 20s 秒でダウンロードしました (112kB/s) 未選択パッケージ libneon27-gnutls を選択しています。 (データベースを読み込んでいます ... 現在 27006 個のファイルとディレクトリがインストールされています。) (.../libneon27-gnutls_0.28.2-6.1_amd64.deb から) libneon27-gnutls を展開しています... 未選択パッケージ libserf-0-0 を選択しています。 (.../libserf-0-0_0.2.0-1_amd64.deb から) libserf-0-0 を展開しています... 未選択パッケージ libsvn1 を選択しています。 (.../libsvn1_1.5.1dfsg1-7_amd64.deb から) libsvn1 を展開しています... 未選択パッケージ subversion を選択しています。 (.../subversion_1.5.1dfsg1-7_amd64.deb から) subversion を展開しています... man-db のトリガを処理しています ... libneon27-gnutls (0.28.2-6.1) を設定しています ... libserf-0-0 (0.2.0-1) を設定しています ... libsvn1 (1.5.1dfsg1-7) を設定しています ... subversion (1.5.1dfsg1-7) を設定しています ... パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 拡張状態情報を書き込んでいます... 完了 タスクの記述を読み込んでいます... 完了 |
・リポジトリを作成(初期設定)
リポジトリ作成コマンド:svnadmin create 作成ディレクトリ
ディレクトリを作成する
mkdir -p /home/svn |
リポジトリディレクトリを作成
svnadmin create --fs-type=fsfs /home/svn/repo |
確認
ll /home/svn/repo drwxr-xr-x 6 root root 4096 2011-06-19 18:36 . drwxr-xr-x 3 root root 4096 2011-06-19 18:36 .. -rw-r--r-- 1 root root 229 2011-06-19 18:36 README.txt drwxr-xr-x 2 root root 4096 2011-06-19 18:36 conf drwxr-sr-x 6 root root 4096 2011-06-19 18:36 db -r--r--r-- 1 root root 2 2011-06-19 18:36 format drwxr-xr-x 2 root root 4096 2011-06-19 18:36 hooks drwxr-xr-x 2 root root 4096 2011-06-19 18:36 locks |
権限を設定する
/home/svnの権限を「www-data」に変更する
chown -R www-data:www-data /home/svn/repo chmod -R gu+w /home/svn/repo |
・ApacheのSVNモジュールをインストール
ライブラリ「libapache2-svn」をインストール。
aptitude install libapache2-svn |
インストール確認
/etc/apache2/mods-availableに「dav_svn.load」「dav_svn.conf」が格納されていること
・ApacheのSVNモジュールの設定
vi /etc/apache2/mods-available/dav_svn.conf #-------Added Start-------- DAV svn SVNParentPath /home/svn SVNListParentPath on #接続にSSLを要求する SSLRequireSSL #Basic 認証させる AuthType Basic #自動コミットON SVNAutoversioning on AuthName "HoGe Subversion Repository" AuthUserFile /home/hoge/public_html/.htpasswd #リポジトリの読み込みに必要なメソッド以外は認証を必要とする Require valid-user #-------Added End-------- |
SVNAutoversioning on =davクライアントでアクセスしたときに自動コミットON
AuthUserFileで指定しているパスは「ApacheのBasic認証」で作成した所を指定する。
(※SSL通信するので、BASIC認証もSSLにより暗号化に含まれる)
SSL接続以外は許可しないので「SSLRequireSSL」を付ける
・設定の反映
Apacheモジュール「dav_svn」停止
a2dismod dav_svn |
Apacheモジュール「dav_svn」起動
a2enmod dav_svn |
Apache本体を再起動
/etc/init.d/apache2 restart |
確認
https://hogehoge.org/svn/
・subvirsionの使い方
ディレクトリを作成する
———————————————
trunk : 開発を進めていくファイルを入れておく。
branches : 分岐した時のブランチを入れる。
tags : 安定版のリリースなどタグを付けたものを入れる。
———————————————
svn mkdir http://hogehoge.org/svn/repo/trunk svn mkdir http://hogehoge.org/svn/repo/branches svn mkdir http://hogehoge.org/svn/repo/tags |
—コマンドライン—-
利用可能なサブコマンド: add blame (praise, annotate, ann) cat changelist (cl) checkout (co) cleanup commit (ci) copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) lock log merge mergeinfo mkdir move (mv, rename, ren) propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) resolve resolved revert status (stat, st) switch (sw) unlock update (up) |
自己認証なのでこれが出る。
'https://hoge.org:443' のサーバ証明書の認証中にエラーが発生しました: - 証明書は信頼のおける機関が発行したものではありません。証明書を手動で認証 するためにフィンガープリントを用いてください! 証明書情報: - ホスト名: hoge.org - 有効範囲: Mon, 20 Jun 2011 15:50:59 GMT から Thu, 17 Jun 2021 15:50:59 GMT まで - 発行者: hoge.org - フィンガープリント: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 拒否しますか (R)、一時的に承認しますか (t)、常に承認しますか (p)? p |
毎回出てきてしまうので、以下のように対応する。
vi /home/hoge/.subversion/servers # ssl-authority-files = /path/to/CAcert.pem;/path/to/CAcert2.pem ssl-authority-files = /etc/apache2/ssl/cakey.pem |
「Apache+SSL環境を構築する」で作成してる「/etc/apache2/ssl/cakey.pem」を指定する。
GUIで使う(Ubuntuの場合 その1(RabbitVCS))
Windowsの「TortoiseSVN」とほぼ同じ感じ
GUIで使う(Ubuntuの場合 その2(rapidsvn))
GUIで使う(Windowsの場合(TortoiseSVN))
WinMergeをインストールして差分表示(Windowsの場合)
ブラウザでリポジトリを確認してみる
・Subversionリポジトリのバックアップ方法
hotcopyでバックアップ(誰かがアクセス中でも大丈夫)
$ svnadmin hotcopy /home/svn/repo/ /home/bkup/repo |
圧縮
$ tar -zcvf repo.tar.gz /home/bkup/repo/ $ rm -rf /home/bkup/sandbox/ |
解凍
$ tar -xzvf repo.tar.gz |
リストア
$ sudo mv repo/ /home/svn/repo $ sudo chown -R www-data:www-data /home/svn/repo |