subversion(SVN)でバージョン管理

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
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です