centos 7インストール構成svn
4885 ワード
centosで直接yumでsvnをインストール
svnバージョンの確認
一、バージョンライブラリの作成
svnデータディレクトリの作成(subversionのデフォルトは/var/svnをデータルートディレクトリとし、起動のデフォルトもここから)
バージョンライブラリの作成
バージョンライブラリを削除する場合
二、エクスポートプロジェクトのインポート
プログラムからコードを入手すると、svnサーバ上でプロジェクトを倉庫にインポートする必要があります.もし私たちのサイトが/var/www/testディレクトリの下に置かれていたら.
-mの後は工事名だ
svnサーバでコードを変更し、実行ディレクトリにupdateするには、倉庫からコードをエクスポートする必要があります.
そのうち/var/www/finalは私たちが最後に導入したディレクトリです.
三、svnプロファイルの構成
各バージョンライブラリが作成されるとsvnserveが生成されます.confプライマリプロファイル
四、svnユーザープロファイルの編集
五、svn権限制御プロファイルの編集
六、フックhooksを利用して自動的に提出コードをウェブサイトのディレクトリに更新する
編集が必要
保存終了後
これにより、提出するたびに私たちのサイトディレクトリに更新されます.
その他のhooksの役割は以下の通りです.
コミットが完了し、バージョンが正常に作成された後にフックが実行され、コミットが完了し、変更できないため、このスクリプトの戻り値は無視されます.
ファイルのロック操作後にスクリプトを実行
このスクリプトは、revisionプロパティを変更した後に実行されます.修正が完了したため、変更できません.このスクリプトの戻り値は無視されます(実際には、スクリプトの正しい実行がプロパティの変更に影響するかどうかが実装されているようです).
このスクリプトは、ファイルのロック解除操作後に実行されます.
Subversion transactionが完了したら、コミットする前にスクリプトを実行します.
ファイルをロックする前にスクリプトを実行
revisionプロパティを変更する前に、スクリプトを実行します.
ファイルをロック解除する前にスクリプトを実行
このスクリプトは、クライアントがサーバにデータをコミットする前に、つまりSubversion transaction(txnと略称)が確立されていない前に実行されます.
七、起動、SVNサービスの表示と停止
SVNサービスの開始
SVNサービスの表示
注意ファイアウォールを開くとselinuxを閉じる
問題
import時にエラーを提示
問題は環境変数の符号化設定が悪いことであり,解決策である.
に加える
update時プロンプトエラー
更新の問題で、ウェブサイトとsvnの中のファイルは一致しないで、svn checkoutの1部のファイルからウェブサイトの中に上書きします
このうち,wwwはcheckout後のフォルダ名であり,自分で勝手に指定することができ,svn checkoutコマンドを実行すると,wwwという空のディレクトリが得られ,中には何もないが,この効果を実現するのはパラメータに指定されたdepth=emptyである.次はチェックアウトしたばかりのwwwディレクトリに入り、update操作を実行し、どのファイルを取りたいのかチェックアウトすればいいのです.最後に、一致しないファイルcopyをウェブサイトに上書きします(元のファイルを1部バックアップしたほうがいいです).
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部バックアップしたほうがいいです).