阿里雲伺服器搭建svn版本庫
搭建和使用SVN
前言
Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的資料。
這些資料放置在一箇中央資料檔案庫(repository) 中。這個檔案庫很像一個普通的檔案伺服器, 不過它會記住每一次檔案的變動。這樣您就可以把檔案恢復到舊的版本, 或是瀏覽檔案的變動歷史。
SVN 的一些概念
- repository(原始碼庫):原始碼統一存放的地方
- Checkout(提取):當您手上沒有原始碼時,您需要從repository checkout一份原始碼
- Commit(提交):如果您已經修改了程式碼,您需要Commit到repository
- Update(更新):當您已經Checkout了一份原始碼,Update一下,您就可以與Repository上的原始碼同步,您手上的程式碼就會有最新的變更
日常開發過程其實就是這樣的(假設您已經Checkout並且已經工作了幾天):Update(獲得最新的程式碼)—> 作出自己的修改並除錯成功 —> Commit(大家就可以看到您的修改了)。
如果您與同事同時修改了同一個檔案,SVN可以合併你們的改動,實際上SVN管理原始碼是以行為單位的,就是說你們只要不是修改了同一行程式,SVN都會自動合併兩種修改。如果是同一行,SVN會提示檔案Confict(衝突),需要手動確認。
安裝SVN
您可以採用以下任一種方法安裝SVN。
使用SVN版本控制映象
您可以在雲市場購買使用 SVN版本控制映象 的ECS例項。
建立了例項後,按以下步驟操作:
- 登入 ECS管理控制檯。
- 在左側導航欄裡,單擊 例項。
- 選擇地域。
- 找到新建立的ECS例項,在 IP地址 列獲取例項的公網IP地址。
手動安裝SVN手動安裝SVN
本文以CentOS 7.2 64位系統為例,說明如何在CentOS 7.2上安裝SVN。
- 遠端連線Linux例項。
- 執行以下命令安裝SVN。
yum install subversion
- 執行以下命令檢視SVN版本。
svnserve --version
- 按以下步驟建立版本庫:
- 執行以下命令建立目錄。
mkdir /var/svn
- 依次執行以下命令建立版本庫。
cd /var/svn
svnadmin create /var/svn/svnrepos
- 依次執行以下命令檢視自動生成的版本庫檔案。
cd svnrepos
ls
Subversion目錄說明:
- db目錄:所有版本控制的資料存放檔案。
- hooks目錄:放置hook指令碼檔案的目錄。
- locks目錄:用來追蹤存取檔案庫的客戶端。
- format檔案:是一個文字檔案,裡面只放了一個整數,表示當前檔案庫配置的版本號。
- conf目錄:是這個倉庫的配置檔案(倉庫的使用者訪問賬號、許可權等)。
- 執行命令 cd conf/ 進入conf目錄(該SVN版本庫配置檔案)。返回結果如下:
- authz:是許可權控制檔案。
- passwd:是賬號密碼檔案。
- svnserve.conf:SVN服務配置檔案。
按以下步驟設定賬號密碼:
vi passwd。
-
1.按 i 鍵進入編輯模式。
-
2.在 [users] 塊中新增使用者賬號和密碼,格式:賬號=密碼,比如示例中的suzhan = redhat(注意等號兩端要有一個空格)。
-
3.按 Esc 鍵退出編輯模式,並輸入 :wq 儲存並退出。
-
按以下步驟設定許可權:
執行 vi authz。
- 按 i 鍵進入編輯模式。
- 在末尾新增如下程式碼(其中,r表示讀,w表示寫):
[/]
suzhan=rw - 按 Esc 鍵退出編輯模式,並輸入 :wq 儲存並退出。
按以下步驟修改svnserve.conf檔案。
- 執行命令 vi svnserve.conf。
- 按 i 鍵進入編輯模式。
- 開啟以下幾個註釋(注意每行不能以空格開始,等號兩端要有一個空格):
anon-access = read #匿名使用者可讀,您也可以設定 anon-access = none,不允許匿名使用者訪問。設定為 none,可以使日誌日期正常顯示
auth-access = write #授權使用者可寫
password-db = passwd #使用哪個檔案作為賬號檔案
authz-db = authz #使用哪個檔案作為許可權檔案
realm = /var/svn/svnrepos #認證空間名,版本庫所在目錄
- 按 Esc 鍵退出編輯模式,並輸入 :wq 儲存並退出。
執行以下命令啟動SVN版本庫。
svnserve -d -r /var/svn/svnrepos
執行命令 ps -ef |grep svn 檢視SVN服務是否開啟。
如果返回結果如下圖所示,表示SVN服務已經開啟。
說明 執行以下命令停止SVN命令。
killall svnserve
新增安全組規則
SVN服務的預設埠為TCP 3690。您需要登入 ECS管理控制檯,新增安全組規則 放行TCP 3690埠。
在Windows上測試
這部分說明如何從本地(Windows作業系統)訪問ECS例項上安裝的SVN服務。
在本地機器上安裝 TortoiseSVN客戶端。
在您的本地專案資料夾(如示例中的C:\KDR),右鍵空白處彈出選單,選擇 SVN檢出。
指定資源庫URL,格式為 svn://例項公網IP地址/資源庫名;指定 檢出至目錄(如本示例中的C:\KDR);再單擊 確定。
如果出現以圖所示資訊,表示檢出成功。
說明 第一次登入需要輸入密碼,一切以passwd檔案裡面的賬戶密碼為主。
修改並提交專案
將專案下載到本地機器後,您可以在新增檔案、修改檔案、刪除檔案等。
提交修改
按以下步驟提交修改:
在專案檔案空白處單擊右鍵,選擇 SVN提交。
輸入本次提交的版本更新資訊(所作修改的註釋)、勾選要提交的操作內容,單擊 確定,即可把本機專案提交到SVN伺服器資源庫,覆蓋掉資源庫專案從而實現更新。
說明
如果發生提交衝突,即兩人都提交修改,後提交者由於版本落後會提交失敗。這時可以先備份自己的專案,從服務端下載最新的專案後,再將自己的專案覆蓋到本地專案資料夾,最後SVN提交即可成功提交。
假設您剛剛刪掉了一個檔案,這裡就會顯示如下截圖所示資訊。
獲取更新
如果別人修改了SVN服務端資源庫上的專案,您想下載最新的專案,則在本機專案檔案空白處單擊右鍵,選擇 SVN更新,即可自動完成下載,並會提示所作的更新有哪些。
說明 在原專案資料夾內選擇SVN更新,會自動覆蓋原有內容。我們建議您先備份,再更新,防止自己本來的專案內容丟失。
SVN還原
開啟一個資料夾,右鍵檢出資料。
刪掉資料。
根據您是否已經提交修改採取不同的操作:
未提交時,右鍵單擊空白處,選擇 TortoiseSVN > SVN 還原。
已提交時,系統庫裡的資料也會得到同步,系統也會把它存的資料刪掉。此時,您需要採取以下方法還原資料:
檢視日誌,確認刪除了哪些檔案。
將刪掉的檔案儲存版本到刪掉的位置。
開啟原資料夾,選擇 SVN提交,系統庫裡的資料就和這個檔案同步了。