1. 程式人生 > >阿里雲伺服器搭建svn版本庫

阿里雲伺服器搭建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例項。

建立了例項後,按以下步驟操作:

  1. 登入 ECS管理控制檯。
  2. 在左側導航欄裡,單擊 例項。
  3. 選擇地域。
  4. 找到新建立的ECS例項,在 IP地址 列獲取例項的公網IP地址。

手動安裝SVN手動安裝SVN
本文以CentOS 7.2 64位系統為例,說明如何在CentOS 7.2上安裝SVN。

  1. 遠端連線Linux例項。
  2. 執行以下命令安裝SVN。
yum install subversion
  1. 執行以下命令檢視SVN版本。
svnserve --version

在這裡插入圖片描述

  1. 按以下步驟建立版本庫:
  • 執行以下命令建立目錄。
mkdir /var/svn
  • 依次執行以下命令建立版本庫。
cd /var/svn
svnadmin create /var/svn/svnrepos
  • 依次執行以下命令檢視自動生成的版本庫檔案。
cd svnrepos
ls

在這裡插入圖片描述

Subversion目錄說明:

  1. db目錄:所有版本控制的資料存放檔案。
  2. hooks目錄:放置hook指令碼檔案的目錄。
  3. locks目錄:用來追蹤存取檔案庫的客戶端。
  4. format檔案:是一個文字檔案,裡面只放了一個整數,表示當前檔案庫配置的版本號。
  5. conf目錄:是這個倉庫的配置檔案(倉庫的使用者訪問賬號、許可權等)。
  • 執行命令 cd conf/ 進入conf目錄(該SVN版本庫配置檔案)。返回結果如下:
    1. authz:是許可權控制檔案。
    2. passwd:是賬號密碼檔案。
    3. svnserve.conf:SVN服務配置檔案。

按以下步驟設定賬號密碼:

vi passwd。
  • 1.按 i 鍵進入編輯模式。

  • 2.在 [users] 塊中新增使用者賬號和密碼,格式:賬號=密碼,比如示例中的suzhan = redhat(注意等號兩端要有一個空格)。

  • 3.按 Esc 鍵退出編輯模式,並輸入 :wq 儲存並退出。

  • 按以下步驟設定許可權:

執行 vi authz。
  1. 按 i 鍵進入編輯模式。
  2. 在末尾新增如下程式碼(其中,r表示讀,w表示寫):
    [/]
    suzhan=rw
  3. 按 Esc 鍵退出編輯模式,並輸入 :wq 儲存並退出。
    在這裡插入圖片描述

按以下步驟修改svnserve.conf檔案。

  1. 執行命令 vi svnserve.conf。
  2. 按 i 鍵進入編輯模式。
  3. 開啟以下幾個註釋(注意每行不能以空格開始,等號兩端要有一個空格):
anon-access = read #匿名使用者可讀,您也可以設定 anon-access = none,不允許匿名使用者訪問。設定為 none,可以使日誌日期正常顯示
auth-access = write #授權使用者可寫
password-db = passwd #使用哪個檔案作為賬號檔案
authz-db = authz #使用哪個檔案作為許可權檔案
realm = /var/svn/svnrepos #認證空間名,版本庫所在目錄
  1. 按 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提交,系統庫裡的資料就和這個檔案同步了。