一.需求linux
1.在多人開發過程當中代碼的管理以及版本的控制是一個很重要的問題,由於在開發過程當中咱們可能會同時更改過某個文件或者更改過多個文件,git
這會致使咱們很容易發生錯誤。因此咱們須要一個方式去管理咱們的代碼。服務器
二.解決方案svn
1.使用svn管理代碼post
2.使用git管理代碼 spa
這兩種代碼管理方式的差別性我看過的這個文章寫的很詳細http://blog.csdn.net/jackjia2015/article/details/50607408,有興趣能夠看看,這裏就不不.net
談他們的差別性了,畢竟本文章的是講如何使用svn同步代碼到項目中code
三.詳細過程htm
yum install subversion
只要照着提示ok下去就行,沒有其餘問題,安裝完畢之後建立svn目錄blog
mkdir /home/svn //在home目錄下建立svn 文件夾 svnadmin create /home/svn/test //建立svn版本倉庫 test
建立完畢之後,在svn目錄下你會看到test目錄,test目錄詳細詳細以下
在本文章主要是配置svn的信息以及如何同步代碼,因此涉及的目錄只有conf目錄以及hooks目錄,下面,咱們開始講解如何配置svn
3.配置svn的基本信息
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的路徑