在linux服務器centos上使用svn同步代碼到項目中
一.需求
1.在多人開發過程中代碼的管理以及版本的控制是一個很重要的問題,因為在開發過程中我們可能會同時更改過某個文件或者更改過多個文件,
這會導致我們很容易發生錯誤。所以我們需要一個方式去管理我們的代碼。
二.解決方案
1.使用svn管理代碼
2.使用git管理代碼
這兩種代碼管理方式的差異性我看過的這個文章寫的很詳細http://blog.csdn.net/jackjia2015/article/details/50607408,有興趣可以看看,這裏就不不
談他們的差異性了,畢竟本文章的是講如何使用svn同步代碼到項目中
三.詳細過程
- 安裝svn服務器端
yum install subversion
只要照著提示ok下去就行,沒有其他問題,安裝完畢以後創建svn目錄
- 創建svn目錄
mkdir /home/svn //在home目錄下創建svn 文件夾 svnadmin create /home/svn/test //創建svn版本倉庫 test
創建完畢以後,在svn目錄下你會看到test目錄,test目錄詳細詳細如下
下面是這些目錄的詳細講解
在本文章主要是配置svn的信息以及如何同步代碼,所以涉及的目錄只有conf目錄以及hooks目錄,下面,我們開始講解如何配置svn
3.配置svn的基本信息
- cd ./conf //進入配置文件夾
authz 文件是創建svn組和組用戶的權限
passwd 設置組中用戶的賬號和密碼
svnserve.conf 配置版本庫信息和用戶文件和用戶密碼文件的路徑、版本庫路徑
(如果是多個倉庫通過相同權限,賬號和密碼控制,可以將authz,passwd文件放到svn目錄下)
(1)authz 配置svn組和組用戶的權限
[group] test = user1,user2 //創建test用戶組,並添加user1 user2用戶 [/] //指定根目錄先的權限 @test = rw //設置test組的權限為可讀可寫
(2)passwd 配置用戶密碼
[users] user1 = 12345678 //用戶名就是組添加成員是的用戶 user2 = 12345677
(3)svnserve.conf 配置版本庫信息和用戶文件和用戶密碼文件的路徑、版本庫路徑
[general] anon-access = none //其他人不可讀取auth-access = write //設置authz中用戶的權限為可寫 password-db = passwd //指向自己passwd文件 authz-db = authz //指向authz文件 realm = /home/svn/test
以上就是配置svn的權限,用戶賬戶密碼以及倉庫路徑
此時,你需要將svn重啟,重啟方式以下
ps -ax | grep svn //查出svn進程 kill -9 ****** //通過kill -9方式殺死進程 *****是對應的pid svnserve -d -r /home/svn //啟動svn服務,當然你如果是想啟動具體的倉庫,可以將路徑寫的更加詳細一點
4.使用post-commit 實現同步代碼
代碼同步需要使用到hooks文件目錄下的post-commit勾子文件,在hooks下很多tmpl文件,這些文件都是勾子的模板來的,
如果需要使用的時候copy 一份去掉.tmpl後綴便可使用
(1)生成一個新的有效的勾子文件post-commit
cp post-commit.tpml post-commit
chmod 777 post-commit //設置post-commit 文件的權限 切記這步一定不可漏,不然後期運行時會報錯
這樣就會生成一個有效的post-commit 文件
(2)同步代碼操作
#!/bin/sh export LANG=en_US.UTF-8 SVN_PATH=/usr/bin/svn WEB_PATH=/data/wwwroot/default/test //test目錄就行你的項目的目錄 $SVN_PATH update $WEB_PATH --username user1 --password 12345678 //切記--username --password 是兩個-
(3)進入服務器目錄,將項目checkout 出來
svn co svn://localhost/test/ /data/wwwroot/default/test --username user1 --password 12345678
這樣子你的代碼同步功能已經實現了
5.客戶端使用
你只需下載個 tortoiseSVN 小烏龜然後將test倉庫拉取下來,然後將代碼放入倉庫文件夾中,通過添加文件方式add 後再commit ,你的項目就會同步到服務器中
6.我遇到的那些錯誤
1.首先客戶端連接svn服務器錯誤,之所以會連接失敗,是因為我的防火墻並沒有開啟3690(svn默認端口),你只需開啟即可
不會請看這個鏈接 http://www.linuxidc.com/Linux/2012-09/70785.htm
2.同步失敗 是因為post-commit文件的權限原因,你只需將權限設置大於755即可
3.提示**** is a direcitory /usr/bin/svn
你把這個搞錯了,他不是一個目錄,是svn的路徑
在linux服務器centos上使用svn同步代碼到項目中