[.net 物件導向程式設計進階] (23) 團隊開發利器(二)優秀的版本控制工具SVN(上)

yubinfeng發表於2016-02-03

[.net 物件導向程式設計進階] (23) 團隊開發利器(二)優秀的版本控制工具SVN(上)

本篇導讀:

上篇介紹了常用的程式碼管理工具VSS,看了一下評論,很多同學深惡痛絕,有的甚至因為公司使用VSS離職的。其實使用什麼程式碼管理工具要看專案而定。畢竟使用何種程式碼管理工具,是專案管理者根據需要來決定的,如果你是一個開發人員,首先要讓自己的技術精進一點。下面根據我個人理解,把這幾種常見的程式碼管理工具使用場景簡單介紹一下。

1.幾種代理管理工具的適用場景

A.如果你的專案是5-6人的小團隊,那麼使用VSS已經可以了。

B.如果是幾十個人的團隊,團隊中需要建立程式碼分支,或者需要跨平臺,跨地區開發,那麼SVN是一個不錯的選擇。

C.對於較大型的專案,如果是使用VS開發,那麼使用TFS是個不錯的選擇,和微軟自己的產品相結合,可以說無縫。並且提供了專案計劃、測試管理、程式碼評審等一攬子功能,如此強大的專案管理工具,我們不能說他不好,只是比較重量級,光就服務端安裝包就2G多,並且需要使用SqlServer資料庫工作 。

D.如果你的專案是開源專案開發人數不定,並且存在較多分支,那麼推薦使用GIT。

2.SVN簡介

名稱:SVN(Subversion的簡稱,開源的版本控制系統)

廠商:開源專案(CollabNet發起並提供啟動資金,目前Wandisco是貢獻最多的全職Subversion開發者並擔任release manager.)

功能:支援建立分支、標誌,支援回滾、事務等。

優點:安裝操作都比較簡單,支援跨平臺,跨地區管理程式碼;有較快的速度;支援檔案重新命名;支援不鎖定開發;管理方便,符合大眾思維習慣;易於上手,代理一致性較高。

缺點:適合中小型專案,人數在幾十人為佳;不適合人數較多的專案,比如開源專案;伺服器開銷較大,資料庫容易暴增;不能離線工作,沒連線伺服器,不能進行對比,還原,提交等工作。

升級:開源專案,管理比也比較規範,升級很及時,不斷有新版本出來,本文編寫時就有新版本1.9.3.27038更新了(2天前更新,可見很及時)。

推薦:★★★★ (中、小型專案適用)

3.SVN的安裝和使用

首先SVN和其他版本控制工具一樣,有Server端和Client端,下面分別介紹安裝和使用。

3.1 安裝包下載

安裝包,我們可以從官方網站下載,官網提供了Linux和Windows各種版本,可以使用,我們主要介紹Windows下的安裝使用 

下載URL:http://subversion.apache.org/packages.html 

拉到最底下

 如上圖,有兩個我們需要的安裝包,先點選第一個"TortoiseSVN" 這是一個客戶端工具,主要用於和WINDOWS資源管理器繫結,進行檔案管理

點選進入“小烏龜”下載網站如下:



分別提供了32位和64位兩種版本,根據我們作業系統下載對應的。下面是各種語言包。我們下載簡體中文

然後,我們點選圖1的第二個地址,進入服務端和VS外掛下載網站,如下圖:

我們下載“VisualSVN for Visual Studio” 這個主要用於VS開發原始碼版本控制。

再下載“VisualSVN Server”這個就是伺服器上需要安裝的管理工具。

一共有四個安裝包,下載後如下:

 

我是64位操作 系統,下載的全是64位,可根據自己的作業系統下載32位或64位

3.2 SVN服務端安裝

雙擊下載的“VisualSVN-Server-3.5.0-x64.msi”進入SVN伺服器安裝

 

下一步

 選擇同意宣告,點下一步

按預設,安裝伺服器及管理員工具 和 命令列工具,點下一步

這裡我們選擇標準版即可,企業版需要每臺伺服器支付950美元,標準版免費,並且其功能基本可以滿足我們的使用需要。點下一步

這裡 Location 為安裝路徑,Repositorys為資料庫存放地址,下面是埠號和是否使用安全連線,按預設即可,點下一步,

配置完成,點Install安裝

安裝完成,選擇啟動SVN伺服器。

3.3 SVN服務端使用

3.3.1建立版本庫

開啟剛才安裝好的SVN伺服器端,“VisualSVN Server Manager”如下

 

服務端主介面 右邊為一些狀態資訊,左邊是我們建立的版本庫,使用者及組。

在版本庫上右擊,開啟選單,分別為 建立版本庫,匯入已存在的版本庫,瀏覽。

我們點選“Create New Repository..”建立一個新的版本庫,開啟視窗如下:

這裡是選擇版本庫型別,我們按預設,點下一步

這裡輸入一個版本庫名稱,點下一步。

這裡我們按預設,選擇 建立一個空的版本庫,點下一步,

這裡是給新建立的版本庫,設定認證方式,我們按預設,選擇“所有使用者都具有讀寫許可權”點選建立,完成版本庫的新建。

 

 點完成,結束版本庫建立。

3.3.2 建立使用者

下面建立使用者,如下圖:

右擊 Users 開啟建立使用者對面框,輸入使用者名稱和密碼,點選OK,

右擊 組 ,點選 建立組

輸入組名 Dev,點選下面的 新增,把前面建立的使用者 yu 加入到該組,點OK

3.3.3 使用者授權

在前面建立的版本庫名 MyObject上右擊,開啟選單中選 Properties...

 

開啟的許可權視窗如下,我們點選 Add..新增使用者或組,在這裡,我們可以選擇組,則表示該組下的所有都具有相應許可權,也可以單選使用者

 

我們選擇dev組名,然後在Permissions中選擇 可讀可寫 許可權,如下圖

至此,服務端配置完成。

3.4 SVN客戶端安裝

下面我們進行SVN客戶端安裝,找到我們之前下載的安裝包,

 

先安裝“小烏龜”TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi,再安裝語言包LanguagePack_1.9.3.27038-x64-zh_CN.msi

 

客戶端的安裝沒什麼好說的,全程下一步。

語言包的安裝也是全程下一步(如果喜歡英文版,這步可以省略)

語言包安裝後,並不會馬上顯示所安裝的語言,需要一步設定。

我們在開始選單中,找到 TortoiseSVN的設定,也可以在你的電腦上任何檔案上右鍵開啟setting 

開啟設定視窗,點選 General ,在右邊的語言選項中,選中簡體中文 ,即可完成語言設定。

至此,客戶端安裝完成。 

3.5 SVN客戶端基本操作

這節是重點,將學習如何使用SVN進行版本控制

3.5.1 簽出專案檔案

首先我們在客戶端電腦上建立一個專案資料夾,MyObject

 

右擊專案資料夾,點簽出

開啟簽出視窗,

在這裡,我們要輸入前面服務端中建立的版本庫地址,我們可以在Server端Copy這個地址,開啟Server端

右擊版本庫,點選復RUL,然後貼上過來

簽出深度有幾項可以選擇,這裡我們預設全遞迴,即可。點選確定

這時會彈出一個認證視窗,在這裡需要驗證一下使用者,使用我們服務端建立的使用者

下面的儲存認證,預設為選中,選中後,下次再執行簽出等操作 ,則無需再次驗證。如果本臺電腦為你一個人使用,可以儲存,如多人使用,請注意安全。

點選確定後,如果認證使用者成功,則簽出完成。

 簽出完成後,因為我們的版本庫中並沒有任何檔案,因此本的專案資料夾也是空的,此時,我們如果顯示隱藏檔案及資料夾

可以看到,資料夾MyObject中多了一個隱藏資料夾

.svn這個隱藏資料夾中記錄著非常重要的資訊,包括工作檔案版本和本地副本時間等,千萬記住,不要手動修改或刪除,否則你本地的副本將被破壞,無法進行正常版本控制了。

3.5.2 檔案9種圖示含義

我們在安成SVN客戶端安裝後,需要重啟電腦或登出電腦,就會發現加入版本庫的本地檔案或資料夾有一個SVN專有小圖示,一共有9種,以下是幾種圖示的含義:

綠色的勾:圖示表示這是一個最新取出的工作副本,他的Subversion狀態是normal。

灰色的勾:灰色圖示表示”只讀”,如果你給一個檔案設定了svn:needs-lock屬性,Subversion會讓此檔案只讀,直到你獲得檔案鎖。只讀檔案具有這個過載圖示來表示你必須在編輯之前先得到一個鎖。

紅色感嘆號:當你開始編輯一個檔案,這個檔案的狀態就會變成modified,圖示也會變成紅色圓圈帶一個感嘆號。這樣你就可以輕易的知道自從上次更新以來都有修改過哪些檔案,需要提交哪些檔案。

黃色感嘆號:三角符號帶感嘆號,表示在一次update中產生了一個衝突(conflict)。

藍色加號:意味著這個檔案或資料夾已經被計劃加入到版本控制之下。

紅叉叉:表示相應檔案或資料夾被計劃刪除(deleted),或者表示檔案缺失。

灰色一行:表示不受版本控制,忽略版本控制。

藍色問號:暫時還沒收到版本的控制,但是沒有被忽略。

鎖釦:表示檔案被鎖定,他的Subversion狀態是normal,必須先釋放鎖才能讓別人的更改提交。

其實這個圖示,我們也可以在SVN客戶端設定中去更改樣式,下面是SVN的幾種樣式,可供選擇。(不得不說,SVN想的非常周到,優秀軟體就該如此)

3.5.3 新增檔案到版本庫(Add)

 新檔案的新增,有兩種方法,一是點Add(加入)先加入到變更列表,再提交;二是直接提交,

個右鍵選單分別對應 加入和更新,

如果先 點加入後,再提交,檔案會自動選中,並且狀態為 增加,如果直接提交,需要手動選中該檔案,如下圖,點選確定,完成檔案新增。

此時,我們在服務端中,點選重新整理版本庫,會發現已經成功加入了一個新檔案。

3.5.4 刪除檔案(Delete)

如果被刪除的檔案,還沒有加入到版本庫,則可以直接刪除,如果已加入版本庫,則需要通過右擊檔案,選中SVN中的刪除

 

 刪除檔案後,其父目錄會有一個紅色歎號,表示該目錄下的檔案被修改了,此時,我們需要提交一次父級目錄。

3.5.5 檔案改名(Rename)

 修改檔名,選中需要重新命名的檔案或資料夾,然後右鍵“TortoiseSVN更新檔名“,在彈出的對話方塊中輸入新名稱,點選”確定”按鈕,並將修改檔名後的檔案或資料夾通過 “SVN 提交”提交到SVN伺服器上。

3.5.6 還原(Revert)

還原檔案或資料夾到以前的版本,如下

右擊檔案或資料夾,在TortoiseSvn,點選 更新至版本....

開啟版本更新視窗,在顯示日誌中選擇前期版本或在版本號中輸入要回退的版本號,即可。

3.5.7  檢查更新(Check for modifications)

這個功能,可以看到你所做的哪些變更沒有提示,包括檔案或目錄的增加、修改、刪除等,點選檢查版本庫,還可以看到其他人改動的內容

 

3.5.8  更新(SVN Update)

更新本地檔案與SVN伺服器上最新的版本一致,在需要更新的資料夾上點選右鍵或者在檔案下空白處點選右鍵,選擇”SVN更新” (獲取指定版本中的內容,點選右鍵執行SVN選單中的“更新至版本“)。

注意:這裡如果你新建的檔案或資料夾沒有加入到Server,更新後,檔案或資料夾依然存在(這也是SVN人性化的地方,求同存異,不會因為更新版本而丟失已經建立的檔案)

3.5.9  解決衝突檔案

在更新以後,經常會有衝突檔案的存在,這是因為,SVN支援不鎖定更改,也就是你編輯檔案的同時,別人也可以更改此檔案。如果你們更新了同一檔案的同一段程式碼。更新後,就會生成三個備份檔案,並且標記衝突檔案。

對於這種常有的問題,該如何解決,有兩種解決方案:

1.放棄自己的更新,回滾到以前版本

2.雙方協商,修改程式碼並提交

當然SVN也為我們提供了衝突程式碼比較功能

開啟”與前一版本比較“,可以通過比較,來修改程式碼,達到一致後提交。

如果衝突程式碼處理不當,一方程式碼丟失,也不要怕,SVN仍然可以通過”更新至版本“回覆丟失的內容。

3.5.10 顯示日誌(Show log)

右擊SVN選單中選擇”顯示日誌“可以檢視誰在什麼時候做了哪些操作。

 

 

3.5.11 版本瀏覽器(Repo-browser)

右擊SVN選單中選擇”版本瀏覽器“,輸入URL地址,未登入的需要驗證使用者,在此可以看到其他人對該版本的操作情況,比如鎖定等操作。

未完待下篇繼續……

3.6 本節要點

本節主要介紹了一個非常優秀並且使用人數較多的原始碼版本控制工具SVN(全名:TortoiseSVN),它的使用場景適用於幾十人的中小型開發團隊,具有跨平臺(HTTP方式訪問)、跨地區、輕量級等眾多優點。

網上介紹SVN的貼子也有不少,本篇也參考了一些其他文章,寫的比較詳細,儘量做到不要遺漏。SVN的缺點比起他的優點幾乎可以忽略,輕量級就決定了他的定位就是中小團隊,因此,你不要說他和其他管理器比較不能支援高併發,超多使用者等等。最後因為篇幅太長,看起來會很累,SVN的分支等高階的內容會在下一篇博文中繼續介紹,此外下篇還會介紹SVN在Visual Studio 2013/2015中的使用,還有一些SVN的使用小技巧,希望支援!

==============================================================================================

返回目錄

<如果對你有幫助,記得點一下推薦哦,如有有不明白或錯誤之處,請多交流>

<對本系列文章閱讀有困難的朋友,請先看《.net 物件導向程式設計基礎》>

<轉載宣告:技術需要共享精神,歡迎轉載本部落格中的文章,但請註明版權及URL>

.NET 技術交流群:467189533 .NET 程式設計

==============================================================================================

相關文章