[.net 面向對象程序設計進階] (23) 團隊開發利器(二)優秀的版本控制工具SVN(上)


[.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 程序設計

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM