SVN搭建以及客戶端使用
第1章 CentOS下搭建SVN伺服器
1.1 SVN簡介
SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。網際網路上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個專案,共用資源的目的
1.2 SVN安裝
官網下載: http://subversion.apache.org/packages.html
SVN客戶端TortoiseSVN :https://tortoisesvn.net/downloads.html
1.2.1 系統環境
[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [[email protected] ~]# uname -r 3.10.0-229.el7.x86_64 [[email protected] ~]# systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled) Active: inactive (dead) Oct 30 22:13:43 Alex systemd[1]: Starting firewalld - dynamic firewall daemon... Oct 30 22:13:48 Alex systemd[1]: Started firewalld - dynamic firewall daemon. Oct 30 22:44:11 Alex systemd[1]: Stopping firewalld - dynamic firewall daemon... Oct 30 22:44:12 Alex systemd[1]: Stopped firewalld - dynamic firewall daemon. [[email protected] ~]# getenforce Permissive
1.2.2 安裝
使用yum命令安裝svn
$ yum install subversion -y
新建svn儲存目錄
$ mkdir /svn
新建一個測試倉庫
$ svnadmin create /svn/test/ $ ll /svn/test/ total 16 drwxr-xr-x. 2 root root 51 Oct 31 12:45 conf drwxr-sr-x. 6 root root 4096 Oct 31 12:45 db -r--r--r--. 1 root root 2 Oct 31 12:45 format drwxr-xr-x. 2 root root 4096 Oct 31 12:45 hooks drwxr-xr-x. 2 root root 39 Oct 31 12:45 locks -rw-r--r--. 1 root root 229 Oct 31 12:45 README.txt
以下關於目錄的說明:
hooks目錄:放置hook腳步檔案的目錄
locks目錄:用來放置subversion的db鎖檔案和db_logs鎖檔案的目錄,用來追蹤存取檔案庫的客戶端
format目錄:是一個文字檔案,裡邊只放了一個整數,表示當前檔案庫配置的版本號
conf目錄:是這個倉庫配置檔案(倉庫使用者訪問賬戶,許可權)
1.2.3 配置SVN配置檔案
$ cd /svn/test/conf $ vim svnserve.conf ### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.tigris.org/ for more information. [general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = read ##注意前邊不要有空格,要頂齊 auth-access = write ##注意前邊不要有空格,要頂齊 ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the directory containing ### this configuration file. ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd ##注意前邊不要有空格,要頂齊 ### The authz-db option controls the location of the authorization ### rules for path-based access control. Unless you specify a path ### starting with a /, the file's location is relative to the the ### directory containing this file. If you don't specify an ### authz-db, no path-based access control is done. ### Uncomment the line below to use the default authorization file. authz-db = authz ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository's uuid. realm = This is My First Test Repository ##這個是提示資訊 [sasl] ### This option specifies whether you want to use the Cyrus SASL ### library for authentication. Default is false. ### This section will be ignored if svnserve is not built with Cyrus ### SASL support; to check, run 'svnserve --version' and look for a line ### reading 'Cyrus SASL authentication is available.' # use-sasl = true ### These options specify the desired strength of the security layer ### that you want SASL to provide. 0 means no encryption, 1 means ### integrity-checking only, values larger than 1 are correlated ### to the effective key length for encryption (e.g. 128 means 128-bit ### encryption). The values below are the defaults. # min-encryption = 0 # max-encryption = 256
1.2.4 配置訪問使用者及密碼
$ cd /svn/test/conf $ vim passwd ### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] # harry = harryssecret # sally = sallyssecret dev = 123456 test1 = 123456 test2 = 123456
1.2.5 配置新使用者的授權檔案
$ cd /svn/test/conf ### This file is an example authorization file for svnserve. ### Its format is identical to that of mod_authz_svn authorization ### files. ### As shown below each section defines authorizations for the path and ### (optional) repository specified by the section name. ### The authorizations follow. An authorization line can refer to: ### - a single user, ### - a group of users defined in a special [groups] section, ### - an alias defined in a special [aliases] section, ### - all authenticated users, using the '$authenticated' token, ### - only anonymous users, using the '$anonymous' token, ### - anyone, using the '*' wildcard. ### ### A match can be inverted by prefixing the rule with '~'. Rules can ### grant read ('r') access, read-write ('rw') access, or no access ### (''). [aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average [groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r admin = dev,test1 user = test2 [/svn/test/] @admin = rw @user = r * = r
說明:
admin = lqb,test2 建立admin組,組成員為:lqb,test2
user = test1 建立使用者組,使用者成員:test1
[test:/] 賦予根許可權,為了便於管理和許可權的控制,可以把許可權細化到版本庫中相應的目錄
@admin = rw admin組有讀寫的許可權
@user = r user組只有讀的許可權
*= 表示除了上面設定的許可權使用者組以外,其他所有使用者都設定空許可權,空許可權表示禁止訪問本目錄,這很重要一定要加上
1.2.6 啟動svn
$ svnserve -d -r /svn
注意:更改svnserver.conf時需要重啟SVN服務,更改authz,passwd檔案時則不需要重啟服務
第2章 通過客戶端進行連線
2.1 下載客戶端並安裝
首先安裝SVN客戶端,windows一般選擇烏龜客戶端https://tortoisesvn.net/downloads.html。
根據系統位數選擇相應客戶端進行安裝
如果你喜歡用命令列操作,請務必記得勾選command line client tool
為will be install on local hard driver
,不用命令列的跳過這一步
然後一路next即可安裝。安裝完畢後,在任意地方右鍵檢視快捷選單。發現TortoiseSVN即表示安裝成功。
如果勾選了安裝命令列工具,那麼輸入命令SVN,有如下提示也表示安裝成功
2.2 中文設定
但是此時選單全是英文的,如果你不習慣英文,可以去下載語言包,記得下對系統位數
官網下載,上面有地址
安裝完語言包之後,可以右鍵進入setting
設定
選擇你喜歡的語言(比如中文),然後確定,不出意外,現在的語言已經切換到中文了
安裝教程到此結束,下面開始介紹SVN的使用
2.3 使用說明
2.3.1 檢出專案
假如專案已經在伺服器的倉庫裡,那麼現在你要做的就是把它檢出到本地。
首先建立一個空資料夾。在空資料夾內右鍵,選擇SVN檢出
現在你看到應該是這個介面,填入版本庫地址,選擇確定
此時會彈出一個對話方塊讓你輸入賬號密碼,輸入你的賬號密碼即可。記得勾選儲存認證,不然每次操作都會讓你輸入。
等幾分鐘就可以檢出完畢
此時在你的目錄下就能看到你的專案,現在可以開始愉快的工作了
2.3.2 匯入專案
但是有時候你已經在本地建立好了專案,需要把你專案推到SVN上,此時應怎麼做呢?
右鍵選擇版本庫瀏覽器。
在相應目錄下,右鍵,加入檔案/加入資料夾,選擇相應目錄即可
比如我現在有個專案叫SVNProject,我想把它傳到SVN上
那麼我只需選擇加入資料夾即可。
務必要輸入提交資訊。這樣別人才能知道你幹了什麼
匯入成功就能看到目錄。
但是,不要以為匯入成功就可以了。你還得重新檢出,重新檢出的專案才是受SVN控制的,務必記得檢出
在SVNProject上右鍵檢出到本地,然後在裡面進行修改。現在就可以愉快的工作了。
檢出過後的右鍵選單變成了這樣。
綠色表示當前檔案沒有被修改過(看不見顏色的重啟下電腦就好了)。
假如我現在在我是新專案
.txt
中加了一行字,然後儲存
發現現在變成了紅色,紅色表示已修改
怎麼提交修改?
在根目錄下,右鍵選擇提交。
務必記得輸入提交資訊(雖然不輸入也能提交),提交資訊可以方便日後檢視。
提交完畢後,可以發現又恢復到了綠色
假如現在加入了一個新檔案。可以看出是藍色的。藍色表示不屬於版本庫的未知檔案,未知檔案是不能提交的。
記住選擇增加把它加入到版本庫裡面去
增加完畢後,變成了藍色加號,表示新增加的版本庫檔案
接下來,只需寫程式碼,然後提交即可。
刪除檔案也應該右鍵提交,如下。
記得隨時檢查你的檔案狀態,如果沒有新增到版本控制裡要及時新增進去,不然你的檔案提交不上去。
2.3.3 更新
假如你和B同學在協作。B同學寫完程式碼提交到了SVN上,如果你想獲取最新修改,就需要選擇更新(如果伺服器上已經有別人提交過的新的,你是提交不上去的,必須先更新再提交)。
怎麼知道伺服器有沒有更新?你可以直接選擇更新,有沒有更新一下就知道。或者右鍵檢查修改,然後檢查版本庫,就能看到伺服器上改了哪些檔案
右鍵選擇HEAD和BASE比較。
左邊的表示你的程式碼,右邊的表示伺服器上的程式碼
如果有修改記得及時更新到本地然後再繼續工作
但是有時候更新會衝突,比如你和伺服器上的改了同一個地方。
這時候你需要更新下來解決衝突。
它會提示你哪個檔案衝突,你只需開啟那個檔案,按照需求解決衝突即可
<<<<<<.mine到====表示你的程式碼,其他表示伺服器的程式碼。你只需改成你想要的
然後選擇解決,告訴SVN我已經解決衝突了就行了
剩下的就是團隊協作間的更新提交操作,這裡不做贅述
2.3.4 檢視日誌
選擇顯示日誌,可以看出團隊裡面的人幹了什麼
可以看出誰誰誰,什麼時間,幹了什麼事。最後那一列資訊是自己提交的時候寫的。建議大家提交時務必要填寫提交資訊,這樣別人一看就知道你幹了什麼。提交資訊對於自己也是有好處的,時間長了也能看到當初做了什麼。
2.3.5 版本回滾
如果你改了東西,但是還沒有提交,可以使用還原功能。
但是如果我們寫錯了東西並且提交了上去怎麼辦?通過版本回滾可以將檔案恢復到
以前的版本。右鍵更新至版本,通過檢視日誌來選擇版本,然後回滾即可
有時候我們需要檢視以前版本的程式碼。此時我們可以新建個資料夾檢出到指定版本
2.3.6 版本控制
版本控制有好幾種方法,如下。
在提交發布版本時新增版本資訊,這是最簡單的一種方法。
打標籤
每次釋出版本時應該打標籤。右鍵選擇分支/標記。在至路徑以版本號打上標籤即可
這樣你就有了一個v1.0版本的標籤。
以後如果你想檢視某個版本的程式碼,只需切換過去就行
部分摘自這位大佬的部落格:https://blog.csdn.net/maplejaw_/article/details/52874348