1、安裝svn服務器:
yum install subversion
2、創建svn版本庫:
mkdir -p /var/svn/目錄 創建對應版本庫一般目錄名稱爲項目名稱,如:/var/svn/project1
3、配置文件
進入到創建的目錄下面的conf文件中,裏面有3個文件:passwd,authz,svnserve.conf
passwd: 配置用戶的文件
在文件最後面直接添加 username = password
如添加一個admin用戶密碼爲123:admin = 123
authz: 配置權限的文件
在文件最後面直接添加
[/]
username = rw
username爲你前面添加用戶名稱,如admin,後面r是隻讀,w是隻寫,rw爲讀寫權限
svnserve.conf: svn配置文件
我是直接把下面這些的註釋去掉了,注意配置前面不能有空格
anon-access = none
#不允許匿名訪問,read爲允許匿名訪問;
auth-access = write
#允許可寫;
password-db = passwd
#密碼數據庫,同目錄剛剛編輯的文件
authz-db = authz
#控制權限數據庫,,同目錄剛剛編輯的文件
realm = /var/svn/project
#對應目錄,爲當前目錄
4、啓動svn服務:
svnserve -d -r /var/svn/
參數:
-d:表示後臺運行守護模式;
-r:表示svn服務的根目錄;
檢測svn端口3690是否已經監聽:
netstat -lntup | grep 3690
需要注意事項:
1、注意防火牆是否開啓3690端口。(怎麼設置防火牆網上百度一大把,我是直接關閉了防火牆。centos7.2的命令是:systemctl stop firewalld.service)
2、如果是阿里雲、騰訊雲之類的,需要到控制檯,實例的安全組中設置開啓3690端口。(阿里云爲例:ESC->安全組->配置規則->添加安全組規則:(協議類型:tcp;端口範圍:3690/3690;授權對象:0.0.0.0/0) )
5、重啓svn:
pkill svnserve
#殺死svn進程
svnserve -d -r /var/svn/
#啓動svn
每次修改配置(svnserve.conf)需要重啓服務,修改另外2個不需要重啓
6、客戶端使用:
1、創建項目目錄:
mkdir /home/www
2、從svn提取數據
svn checkout svn://127.0.0.1/project /home/www --username admin --password 123
或者:
svn co --username admin--password 123 svn://127.0.0.1/project /home/www
3、提交數據:
touch /home/www/trunk/test2.txt
svn add /home/www/trunk/test2.txt
svn ci -m "test2.txt" /home/www/trunk/test2.txt
ci簡稱:commit;
co簡稱:checkout;
注意:提交時,先add,再commit;
4、設置更新、自動更新項目,svn鉤子腳本:
手動更新:
svn update /home/www --username admin --password 123
自動更新:
在 /var/svn/project/hooks 目錄下創建一個 post-commit 文件(改文件爲每次提交後執行的腳本)
文件添加內容爲:
#!/bin/bash
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
WEB_PATH=/home/www #目標路徑
SVN_USER=admin #用戶名
SVN_PASS=123 #密碼
LOG_PATH=/home/svnlog/web.log #每次處理日誌記錄
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH #更新項目
chown -R 777 $WEB_PATH