http://d.hatena.ne.jp/dayflower/20070604/1180941582
http://www.hyuki.com/techinfo/svninit.html#import
http://thinkit.co.jp/cert/article/0611/2/2/2.htm
subversionのインストール設定にapache2を追加して再インストールする。
$ grep subversion /etc/portage/package.use dev-vcs/subversion -dso perl apache2
apacheの設定にSVN,DAVを追加する。
$ grep ^APACHE2_OPTS /etc/conf.d/apache2 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE" APACHE2_OPTS="${APACHE2_OPTS} -D PHP5 -D PROXY -D EXTRACT_FORWARDED" APACHE2_OPTS="${APACHE2_OPTS} -D SVN -D SVN_AUTHZ -D DAV -D DAV_FS -D SSL -D SSL_DEFAULT_VHOST"
ディレクトリを作成する。
$ sudo mkdir -p /var/svn/repos
レポジトリを作成する。
$ sudo svnadmin create /var/svn/repos/repos001 $ sudo chown -R apache:apache /var/svn/repos/repos001/
apacheの設定に追加する。
$ rcsdiff /etc/config-archive/etc/apache2/modules.d/47_mod_dav_svn.conf,v /etc/apache2/modules.d/47_mod_dav_svn.conf =================================================================== RCS file: /etc/config-archive/etc/apache2/modules.d/47_mod_dav_svn.conf,v retrieving revision 1.1 diff -r1.1 /etc/apache2/modules.d/47_mod_dav_svn.conf 15a16,24 > <Location /svn/repos> > DAV svn > SVNParentPath /var/svn/repos > SVNListParentPath On > AuthType Basic > AuthName "Subversion repository" > AuthUserFile /var/svn/conf/svnusers > Require valid-user > </Location>
Basic認証の設定をする。
$ sudo mkdir /var/svn/conf/ $ sudo htpasswd -c /var/svn/conf/svnusers admin
再起動する。
$ sudo /etc/init.d/apache2 restart
確認する。
http://192.168.xxx.xxx/svn/repos/
Collection of Repositories repos001/ Powered by Subversion version 1.6.17 (r1128011).
SSLのみ。
$ rcsdiff -u /etc/config-archive/etc/apache2/modules.d/47_mod_dav_svn.conf,v /etc/apache2/modules.d/47_mod_dav_svn.conf =================================================================== RCS file: /etc/config-archive/etc/apache2/modules.d/47_mod_dav_svn.conf,v retrieving revision 1.2 diff -u -r1.2 /etc/apache2/modules.d/47_mod_dav_svn.conf --- /etc/apache2/modules.d/47_mod_dav_svn.conf 2012/11/03 14:40:53 1.2 +++ /etc/apache2/modules.d/47_mod_dav_svn.conf 2012/11/03 14:41:29 @@ -14,6 +14,7 @@ # Require valid-user #</Location> <Location /svn/repos> + SSLRequireSSL DAV svn SVNParentPath /var/svn/repos SVNListParentPath On
テスト。
import.
$ cd /tmp/ $ mkdir htdocs $ cd htdocs/ $ echo "test001" >> a.txt $ cat a.txt test001 $ svn import http://192.168.0.110/svn/repos/repos001/htdocs -m "test001" 追加しています a.txt リビジョン 1 をコミットしました。
checkout.
$ cd /tmp/ $ mv -i htdocs/ htdocs.old $ svn checkout http://192.168.0.110/svn/repos/repos001/htdocs htdocs A htdocs/a.txt リビジョン 1 をチェックアウトしました。 $ diff -r htdocs.old/ htdocs htdocsだけに発見: .svn
diff.
$ cd htdocs $ echo "test002" >> a.txt $ svn diff Index: a.txt =================================================================== --- a.txt (リビジョン 1) +++ a.txt (作業コピー) @@ -1 +1,2 @@ test001 +test002 $ svn commit . -m "test002" 送信しています a.txt ファイルのデータを送信しています . リビジョン 2 をコミットしました。 $ svn diff $ echo "test003" >> a.txt $ svn diff Index: a.txt =================================================================== --- a.txt (リビジョン 2) +++ a.txt (作業コピー) @@ -1,2 +1,3 @@ test001 test002 +test003
delete.
$ svn delete http://192.168.0.110/svn/repos/repos001/htdocs/a.txt -m 'test004' リビジョン 3 をコミットしました。 $ cd /tmp/ $ svn checkout http://192.168.0.110/svn/repos/repos001/htdocs htdocs C htdocs/a.txt リビジョン 3 をチェックアウトしました。 Summary of conflicts: Tree conflicts: 1 $ mv -i htdocs htdocs.current $ svn checkout http://192.168.0.110/svn/repos/repos001/htdocs htdocs リビジョン 3 をチェックアウトしました。 $ diff -r -q htdocs htdocs.current/ ファイル htdocs/.svn/all-wcprops と htdocs.current/.svn/all-wcprops は異なります ファイル htdocs/.svn/entries と htdocs.current/.svn/entries は異なります htdocs.current/.svn/text-baseだけに発見: a.txt.svn-base htdocs.current/だけに発見: a.txt $ svn checkout -r2 http://192.168.0.110/svn/repos/repos001/htdocs htdocs A htdocs/a.txt リビジョン 2 をチェックアウトしました。 $ diff -r -q htdocs htdocs.current/ ファイル htdocs/.svn/all-wcprops と htdocs.current/.svn/all-wcprops は異なります ファイル htdocs/.svn/entries と htdocs.current/.svn/entries は異なります ファイル htdocs/a.txt と htdocs.current/a.txt は異なります $ diff htdocs/a.txt htdocs.current/a.txt 2a3 > test003
よくわからないがdeleteしたファイル名は指定できなかった。
たぶんコマンドの内容がおかしい。
普通はコマンドではなくエディタの機能を経由とかで使うので復活方法を把握しとけばOK.
$ svn copy http://192.168.0.110/svn/repos/repos001/htdocs/a.txt a.txt svn: パス 'http://192.168.0.110/svn/repos/repos001/htdocs/a.txt' がリビジョン 4 に見つかりません $ svn copy -r2 http://192.168.0.110/svn/repos/repos001/htdocs/a.txt a.txt svn: パス '/svn/repos/repos001/!svn/bc/4/htdocs/a.txt' が見つかりません $ svn copy -r2 http://192.168.0.110/svn/repos/repos001/htdocs/ htdocs A htdocs/a.txt リビジョン 2 をチェックアウトしました。 A htdocs
ファイルシステムは?
たぶん安全性を取るとfsfsが良い。
しかしどこか壊れているのに大丈夫なつもりで使い続けるほうがまずそう。
$ svnadmin create --help | grep "fs-type" --fs-type: リポジトリ形式: 'fsfs' (デフォルト) または 'bdb'
バックアップは?
1日1回やって古いのは消すとか。cron,logrotateとか。
$ tar cvzf varsvn.tar.gz /var/svn/
0 件のコメント:
コメントを投稿