SVN是C/S架構,數據存放分紅服務器端和客戶端。建立代碼庫通常指的是SVN服務器端的操做,這個庫隨便建在什麼地方均可以;你要發佈的線上代碼,這是存放在SVN的客戶端的。 SVN的服務器端和客戶端存放文件的格式是不一樣的,因此不能直接訪問SVN服務器端的存儲路徑,只能經過SVN客戶端將服務器端的存儲內容checkout或者export出來。
一、先創建一個SVN服務器(能夠專門安裝SVN服務器端安裝包,創建用http/https或svn協議訪問的SVN服務器;也能夠簡單用TortoiseSVN建立本地的用files:///方式訪問的SVN服務器); 二、在服務器端創建一個空的版本庫,將你原有的www-web-項目 文件夾 上傳到SVN服務器新建的版本庫中; 三、在你線上存放代碼的地方新建一個文件夾,並將版本庫中的內容checkout到這個新文件夾,設置這個文件夾是之後線上發佈代碼的文件夾; 四、在你開發用的工做電腦上checkout一個文件夾出來,平時在這個文件夾修改代碼,修改完成後上傳到SVN服務器,而後在線上代碼對應的文件夾那裏更新獲得上傳的新代碼。 這樣的話,你的整個工做就分紅了3個存儲位置:一、服務器端,二、開發端,三、線上發佈端,這就層次分明、互不干擾了。
準備兩臺機器,一臺作服務端,一臺作客戶端。web
[root@server ~]# yum -y install subversion #安裝軟件 [root@server ~]# mkdir -p /home/svn/test #建立版本庫目錄(自定義) [root@server ~]# svnadmin create /home/svn/test #建立新的repository(版本庫) [root@server ~]# cd /home/svn/test/conf [root@server conf]# ls #建立版本庫後,會自動生成三個配置文件 authz passwd svnserve.conf [root@server conf]# vim svnserve.conf #進入配置文件,將下面5行註釋打開 anon-access = read auth-access = write password-db = passwd authz-db = authz realm = My First Repository =================================================================================== anon-access: 控制非鑑權用戶訪問版本庫的權限。 auth-access: 控制鑑權用戶訪問版本庫的權限。 password-db: 指定用戶名口令文件名。 authz-db:指定權限配置文件名,經過該文件能夠實現以路徑爲基礎的訪問控制。 realm:指定版本庫的認證域,即在登陸時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文 ===================================================================================
[root@server conf]# vim passwd #在users模塊裏面添加一個用戶yjssjm,密碼是123
[root@server conf]# vim authz [groups] harry_and_sally = harry,sally harry_sally_and_joe = harry,sally,&joe yjssjm = yjssjm #定義組yjssjm,且裏面只有一個用戶yjssjm,組名能夠自定義,用戶名能夠加多個,以逗號隔開 [test:/] #定義目錄,此目錄是項目test的根目錄 @yjssjm = rw #用戶可讀可寫 * = rw #其它用戶也可讀可寫 ====================================================================== [root@server conf]# #svnserve –d –r /home/svn #啓動服務 [root@server conf]# lsof -i:3690 #默認端口號 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME svnserve 15464 root 3u IPv4 216724 0t0 TCP *:svn (LISTEN) [root@server conf]# svnlook tree /home/svn/test/ --full-paths --show-ids #查看版本庫 --full-paths 顯示路徑 --show-ids 顯示版本號
[root@client ~]# yum -y install subversion [root@client ~]# svn checkout svn://服務端ip/home/svn/test
若是報錯:
緣由:svn服務未啓動或者是啓動的時候未指定svn倉庫路徑,svn默認倉庫路徑爲/var/svn,因此咱們須要手動指定爲/home/svn/
解決方案:shell
ps -aux|grep svn #查找出來svn的pid, kill -9 svn的pid進程號 #用kill殺掉進程 svnserver –d –r /home/svn/ #重啓服務
提交代碼文件:
服務器上沒有的文件,在客戶端須要先add預提交,再commit,若是服務器端已有的文件,直接commitvim
# 提交test.txt文件 [root@client ~]# cd /root/davesvn/test [root@client test]# vim test.txt #隨意寫入數據 [root@client test]# svn add test.txt A test.txt [root@client test]# svn commit test.txt -m "test-version1" Authentication realm: My First Repository Password for 'root': #輸入虛擬機root密碼 Authentication realm: My First Repository Username: svn #輸入svn配置文件內建立的用戶 Password for 'svn': #輸入用戶密碼 ------ ATTENTION! Your password for authentication realm: \``` My First Repository \``` can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in ## '/root/.subversion/servers'. Store password unencrypted (yes/no)? yes #輸入yes Adding test.txt Transmitting file data . Committed revision 1.
大家的評論和點贊是我寫文章的最大動力,蟹蟹。服務器