svn-多個項目版本庫和自動同步更新post-commit

因爲項目測試需求,須要遠程服務器上使用svn作版本控制.html

需求:web

1,項目test1,項目test2,各自獨立版本庫,各自獨立用戶權限,便於項目管理windows

2,同步提交,本地svn提交至版本庫後,服務器上的web根目錄上的項目同步更新。達到本地update,瀏覽器訪問實時生效瀏覽器

 

步驟:bash

1,安裝svn 過程略去服務器

2,配置項目svn

一,建立版本庫post

建立多個項目的版本庫測試

工做目錄url

/var/www/

項目1:svnadmin create /var/www/svn/test1

項目2:svnadmin create /var/www/svn/test2

二,修改項目配置

===============================

cd /var/www/svn/test1

目錄權限

vi conf/authz  

[/]

*=rw

帳號密碼

vi conf/passwd

user1=123456

主配置

vi conf/svnserve.conf

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
 
同步更新
cp hooks/post-commit.tmpl hooks/post-commit
chmod 777 hooks/post-commit      //若是不給權限的話,同步更新會報255錯誤的。
vi post-commit
cd /var/www/test1 && /usr/bin/svn update --username user1 --password 123456
 

若是還報127,記得把最下面這句註釋或刪掉

#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

 
三,開啓進程
注意不能使用下面這種,否則checkout會報url不存在的。

svnserve -d -r /var/www/svn/test1

svnserve -d -r /var/www/svn/test2

正確的是

svnserve -d -r /var/www/svn/

ps -ef|grep svnserve  //查看進程是否正常

若是已經有其餘進程用命令殺掉kill pid

上面是項目test1的配置,項目test2的配置也和上面大致一致,不在贅述。

4,導入項目

mkdir /var/www/test1

touch test1.txt

midir /var/www/test2

touch test2.txt

 

svn import /var/www/test1 file:///var/www/svn/test1 -m "導入項目1"

svn import /var/www/test2 file:///var/www/svn/test2 -m "導入項目2"

 

 5,checkout檢出

測試一下。把/var/www/test1  和/var/www/test2  刪掉

cd  /var/www

svn checkout svn://IP/test1

svn checkout svn://IP/test2

看test1,和test2目錄果真下載下來了。

而後我到個人windows本地上也checkout一下,地址一樣是上面的兩個

輸入帳號密碼,也成功下載了文件

咱們在test1,test2其中添加提交b.txt,c.txt,

而後到服務器上看/var/www/test1,和 test2中果真已經實時更新出現了。

個人http://test1.aaa.com 和http://test2.aaa.com

分別對應的是/var/www/test1和/var/www/test2

清楚了web的目錄指向後,看到的效果天然也就是所謂的實時更新了。

 

=========================================
 
備註:仍是想的太美好了。出現了問題。
當使用的鉤子更新的時候。若是有中文的文件,是會報錯,致使跳出更新失敗的。
 
網上找了不少解決方案,都是改系統字符集。然而仍是報錯。沒有辦法。仍是使用定時任務吧。
 
crontab -e

#每分鐘更新,並記錄日誌
#*/1 * * * * /root/svn_update.sh >> /tmp/log/svn_update.log

#每5分鐘更新,不記錄日誌。

*/5 * * * * /root/svn_update.sh

vi svn_update.sh

#!/bin/bash
cd /var/www/test1 && /usr/bin/svn up
cd /var/www/test2 && /usr/bin/svn up

 

參考:http://blog.csdn.net/honeyjimmy/article/details/24431713

常見錯誤:http://www.2cto.com/os/201407/322026.html

相關文章
相關標籤/搜索