SVN學習筆記 - SVN的簡介和使用

SVN簡介

版本控制(Revision control

最初來源於工程設計領域,是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干文件內容變化,以便將來查閱特定版本修訂情況的系統。

Subversion

SVN全稱Subversion,是一款實現版本控制的工具,也成爲版本控制器;

SVNApache軟件基金會組織下的一個項目;

SVN的優點

①目錄版本控制

CVS 只能追蹤單個文件的歷史,但是 Subversion 實現了一個“虛擬”文件系統,可以追蹤整個目錄樹的修改,文件和目錄都是版本控制的,結果就是可以在客戶端對文件和目錄執行移動和複製命令。

②原子提交

提交要麼完全進入版本庫,要麼一點都沒有,這允許開發者以一個邏輯塊提交修改。

③版本控制的元數據

每個文件和目錄都有一組附加的“屬性”,你可以發明和保存任意的鍵/值對,屬性也會像文件內容一樣被納入版本控制。

④可選的網絡層

Subversion 在版本庫訪問方面有一個抽象概念,利於人們去實現新的網絡機制,Subversion 的“高級”服務器是 Apache 網絡服務器的一個模塊,使用 HTTP 的變種協議 WebDAV/DeltaV 通訊,這給了 Subversion 在穩定性和交互性方面很大的好處,可以直接使用服務器的特性,例如認證、授權、傳輸壓縮和版本庫瀏覽等等。也有一個輕型的,單獨運行的 Subversion 服務器,這個服務器使用自己的協議,可以輕鬆的用 SSH 封裝。

⑤一致的數據處理

Subversion 使用二進制文件差異算法展現文件的區別,對於文本(人類可讀)和二進制(人類不可讀)文件具備一致的操作方式,兩種類型的文件都壓縮存放在版本庫中,差異在網絡上雙向傳遞。

⑥高效的分支和標籤

分支與標籤的代價不與工程的大小成比例,Subversion 建立分支與標籤時只是複製項目,使用了一種類似於硬鏈接的機制,因而這類操作通常只會花費很少並且相對固定的時間,以及很小的版本庫空間

SVN的原理

SVN採取客戶端/服務器模式——在服務器的版本庫中保存項目文件的各個版本,所有參與協同開發的程序員在自己本地電腦上保存一個工作副本。SVN 支持程序員將本地副本更新到服務器端的最新版本,也支持將本地副本的最新改變更新到服務器端,而且後面的更新不會覆蓋前面的更新,而是作爲一個新的版本被保存下來——SVN甚至支持將本地工作副本恢復爲服務器端保存的某一個歷史版本。

SVN的基本操作

①檢出(checkout):將一個服務器端創建好的項目整個下載到本地,這是到項目組後參與開發的第一步,只需執行一次。

②更新(update):將本地文件更新爲服務器端的最新版本,通常爲每天上班時或修改公共文件之前執行一次。

③提交(commit):將本地修改提交到服務器端。通常每天下班前或每實現一個功能、完成一個模塊時執行一次。

SVN的安裝

SVN服務器的安裝

這裏安裝的版本是VisualSVN-Server-3.5.0-x64.msi

1)雙擊啓動安裝程序,如下圖:

2)點擊“Next”,勾選“I accept ...”,如下圖:

3)點擊“Next”,默認選擇的即可,第一項是安裝VisualSVN Server以及控制檯,最後一項是自動加入環境變量,如下圖:

4)點擊“Next”,選擇Standard Edition(標準版),如下圖:

5)點擊“Standard Edition”,選擇安裝路徑(Location)和代碼庫(Repositories)的位置,Server PortSVN服務器端口號)如下圖:

一般SVN服務器默認端口是3690


6)點擊“Next”,進入確認安裝界面,點擊“Install”開始安裝,如下圖:

7)安裝中,如下圖:

8)點擊“Finish”,安裝完成,如下圖:

Subscribe for release notifications via email or RSS:訂閱通過電子郵件或RSS發佈通知;

Start visualSVN server manager:啓動visualSVN服務器管理器;


9)測試是否安裝成功,如下圖,即爲安裝成功:

SVN安裝完成後,會自動在環境變量中配置SVNbin目錄,在cmd中執行svn --version進行驗證;


註冊Windows服務

注:

a)將SVN 服務端程序註冊爲 Windows 服務,就可以讓SVN 服務隨系統一起啓動,克服了命令行方式的不足。

b)註冊 Windows 服務需要利用 XP2000 以上系統自帶工具 Service Control,執行文件是 sc.exe,注意這個命令不是 SVN 的命令。

1)執行註冊服務的命令

以管理員身份運行cmd,執行下面的命令;

命令格式:


binpath 組成結構說明:


版本庫目錄說明:

示例:

sc create MySVNService binpath= "E:\develop_soft\VisualSVNServer\bin\svnserve.exe --service -r E:\SvnRepositories" start= auto depend= Tcpip

注:MySVNService爲服務名;

如下圖爲註冊成功:


2)啓動服務

方式1

右鍵“我的電腦” ---> “管理” ---> “服務和應用程序” ---> “服務”,找到MySVNService,右鍵“啓動”即可;

方式2

命令啓動格式:sc start 服務名

示例:sc start MySVNService

3)失敗處理

檢測:打開命令行窗口運行 netstat an 查看 3690 端口是否被監聽

●如果啓動失敗,那很有可能是 binpath 中的內容有錯誤,此時只能將已經創建

的服務刪除,重新創建。

●刪除服務之前,最好先停止服務。停止服務的命令格式如下:

格式:sc stop 服務名

示例:sc stop MySVNService

●刪除服務的命令格式如下:

格式 sc delete 服務名

舉例 sc delete MySVNService

注:刪除、啓動、停止服務同樣需要管理員權限

SVN的用戶、分組

創建用戶

a)打開VisualSVN Server,選擇“Users”,右鍵“新建”,選擇“User”,如下圖:

2)輸入用戶名,密碼,確認密碼,點擊“OK”,完成創建;

創建分組

a)打開VisualSVN Server,選擇“Groups”,右鍵“新建”,選擇“Group”,如下圖:

2)輸入分組名,點擊“Add..”,選擇該分組的用戶,點擊“OK”即可;

EclipseSVN的使用

Eclipse分享項目到SVN

1)選中項目名,右鍵選擇“Team”,選擇“Share Project”,選擇“SVN”,點擊“Next”,如下圖:

2)如下圖,選擇“創建新的資源庫位置”,如果有資源庫位置了,選擇下面的一個,點擊“Next”;

3)如下圖,填寫版本庫的URL,點擊“Next”;

4)選擇上傳到SVN上的文件名,使用默認就好,這裏不用做變動,點擊“Next”;

5)填寫註釋,不填也可以,點擊“Finish”即可;

6)選擇項目名,右鍵選擇“Team”,點擊“提交”,選擇需要提交的文件,點擊“OK”完成提交,如下圖:

SVN上檢出項目到Eclipse

1)在Project Explorer視圖空白處,右鍵選擇“Import...”,輸入“SVN”,查找到“從SVN檢出項目”,點擊“Next”,如下圖:

2)選擇版本庫URL,點擊“Next”;

3)選擇要檢出的項目,點擊“Next”;

4)編輯檢出的項目名,如果不需要修改,點擊“Next”;

5)選擇檢出的工作空間,如果不需要改動,默認使用的是當前Eclipse的工作空間,點擊“Finish”;

更新提交

提交:選擇項目或需要上傳文件右鍵Team---> “提交”;

更新:選擇項目或需要上傳文件右鍵Team---> “更新”;

衝突

衝突情況

當提交文件時,如果該文件的版本在svn服務器中不是最新的版本,那麼提交時就會出現下面的提示“版本過時”;

這時執行“更新操作”,出現如下的情況:

1:

2

1是該情況時的目錄結構,圖2是該情況時的文件內容;

1

index.jsp.mine:表示提交時的文件;

index.jsp.r3:表示提交時,該文件的上個版本的文件;

index.jsp.r4:表示提交時,當前svn服務器中最新的版本;

說明:rx表示版本號,x大的是服務器中最新的版本;

2

<<<<<<<<  .mine

xxxx...

========

這部分內容是提交時的文件內容;

========

xxx...

>>>>>>>> .r4

這部分內容是svn服務器上最新的內容;

衝突解決

a)選中要解決的文件,右鍵“Team---> “編輯衝突”,如下圖:

b)編輯完衝突,保存左側的文件,選擇解決的文件,右鍵“Team---> “標記爲解決”,如下圖:

c)點擊“OK”即可,這時,之前產生的三個文件自動刪除,剩下的文件時最新的版本,如下圖:

權限

權限是給開發人員分配在svn中創建不同身份、權限的用戶,這樣在開發人員檢出、提交、更新時,通過分配給開發人員的svn用戶權限來做限制;

注:svn服務器的用戶創建參看前面“SVN的用戶、分組”這部分內容;

時光機

時光機其實就是查看歷史版本,如果需要某個歷史版本,可以回退到某個歷史版本;

a)選擇需要查看歷史版本的文件或項目 ---> 右鍵“Team---> “顯示資源歷史記錄”,如下圖:

2)選擇需要回退到的版本,右鍵“獲取內容”即可;

附錄

SVN Server端口號的修改

1)基於svnserve的,默認端口爲3690,修改方法如下:

通過svnserve -d -r d:\svn來提供服務 (假設d:\svn爲你的版本庫所在目錄)爲svnserve 加上--listen-port參數,比如svnserve -d -r d:\svn --listen-port 81(注:--listen-port中間無隔);

2)基於Apache的,默認端口爲Apache的默認端口80,修改方法如下:

通過Apache來提供服務,在httpd.conf中,查找Listen 80,將80修改爲你想要的端口;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章