centos 7インストール構成svn


centosで直接yumでsvnをインストール
yum install subversion

svnバージョンの確認
svnserve --version

一、バージョンライブラリの作成
svnデータディレクトリの作成(subversionのデフォルトは/var/svnをデータルートディレクトリとし、起動のデフォルトもここから)
mkdir -p /var/svn

バージョンライブラリの作成
svnadmin create /var/svn/test

バージョンライブラリを削除する場合
rm -rf /var/svn/test

二、エクスポートプロジェクトのインポート
プログラムからコードを入手すると、svnサーバ上でプロジェクトを倉庫にインポートする必要があります.もし私たちのサイトが/var/www/testディレクトリの下に置かれていたら.
svn import /var/www/test file:///var/svn/test -m "test"

-mの後は工事名だ
svnサーバでコードを変更し、実行ディレクトリにupdateするには、倉庫からコードをエクスポートする必要があります.
svn checkout svn://localhost:3777/test /var/www/final

そのうち/var/www/finalは私たちが最後に導入したディレクトリです.
三、svnプロファイルの構成
各バージョンライブラリが作成されるとsvnserveが生成されます.confプライマリプロファイル
vim /var/svn/test/conf/svnserve.conf
[general]
anon-access = none                    # 
auth-access = write                   # 
password-db = passwd                  # 
authz-db = authz                      # 
realm = test                          # , 

四、svnユーザープロファイルの編集
vim /var/svn/test/conf/passwd
[users]
admin = admin                # , 
fuhd = fuhd                # , 
test = test                # , 

五、svn権限制御プロファイルの編集
vim /var/svn/test/conf/authz
[groups]
admin = admin         #admin , admin 
test = fuhd,test

[test:/]                # (/var/svn/test),test:  realm = test
@admin = rw            # admin ,r ,w 

[test:/test]         # test (/var/svn/test/test)
@test = rw                # test test 

六、フックhooksを利用して自動的に提出コードをウェブサイトのディレクトリに更新する
編集が必要
vim /var/svn/test/hooks/post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
export      

SVN_PATH=/usr/bin/svn
WEB_PATH=/data/www/final
SVN_USER=test                                
SVN_PW=test
LOG_PATH=/var/log/svn.log

echo `date "+%Y-%m-%d %H:%M:%S"` >>$LOG_PATH
echo `whoami`,$REPOS,$REV >>$LOG_PATH

$SVN_PATH update $WEB_PATH --username $SVN_USER --password $SVN_PW --no-auth-cache >>$LOG_PATH || exit 1

chown -R www:www $WEB_PATH

exit 0

保存終了後
chmod +x post-commit

これにより、提出するたびに私たちのサイトディレクトリに更新されます.
その他のhooksの役割は以下の通りです.
post-commit

コミットが完了し、バージョンが正常に作成された後にフックが実行され、コミットが完了し、変更できないため、このスクリプトの戻り値は無視されます.
post-lock

ファイルのロック操作後にスクリプトを実行
post-revprop-change

このスクリプトは、revisionプロパティを変更した後に実行されます.修正が完了したため、変更できません.このスクリプトの戻り値は無視されます(実際には、スクリプトの正しい実行がプロパティの変更に影響するかどうかが実装されているようです).
post-unlock

このスクリプトは、ファイルのロック解除操作後に実行されます.
pre-commit

Subversion transactionが完了したら、コミットする前にスクリプトを実行します.
pre-lock

ファイルをロックする前にスクリプトを実行
pre-revprop-change

revisionプロパティを変更する前に、スクリプトを実行します.
pre-unlock

ファイルをロック解除する前にスクリプトを実行
start-commit

このスクリプトは、クライアントがサーバにデータをコミットする前に、つまりSubversion transaction(txnと略称)が確立されていない前に実行されます.
七、起動、SVNサービスの表示と停止
SVNサービスの開始
# -d:   -r:svn    --listen-port: 
svnserve -dr /var/svn/test --listen-port 3690

SVNサービスの表示
ps aux|grep svnserve               # :3690

注意ファイアウォールを開くとselinuxを閉じる
vim /etc/sysconfig/selinux
SELINUX = disable               # disable

問題
import時にエラーを提示
svn: E000022: Error converting entry in directory '/var/www/test/images' to UTF-8
svn: E000022: Can't convert string from native encoding to 'UTF-8':

問題は環境変数の符号化設定が悪いことであり,解決策である.
vim ~/.bashrc

に加える
export LC_ALL=en_US.UTF-8
export.UTF-8
export LANGUAGE=en_US.UTF-8
source ~/.bashrc

update時プロンプトエラー
post-commit hook failed (exit code 1) with output:
Conflict discovered in '/data/www/index.php',
Select: (p) postpone, (df) diff-ful, (e) edit.
     (mc) mine-conflict, (tc) theirs-conflict,
     (s) show all options: svn: E070014: Can't read stdin: End of file found

更新の問題で、ウェブサイトとsvnの中のファイルは一致しないで、svn checkoutの1部のファイルからウェブサイトの中に上書きします
svn checkout --depth=empty file:///svn/www/ www
cd www
svn update index.php

このうち,wwwはcheckout後のフォルダ名であり,自分で勝手に指定することができ,svn checkoutコマンドを実行すると,wwwという空のディレクトリが得られ,中には何もないが,この効果を実現するのはパラメータに指定されたdepth=emptyである.次はチェックアウトしたばかりのwwwディレクトリに入り、update操作を実行し、どのファイルを取りたいのかチェックアウトすればいいのです.最後に、一致しないファイルcopyをウェブサイトに上書きします(元のファイルを1部バックアップしたほうがいいです).