上一篇文章帶你玩轉Visual Studio——帶你高效開發通過對VAssistX優秀外掛程式的講解,讓我們掌握了快速開發C++代碼的技能。然而大部分的程式都不是一個人的開發的,是由一個團隊的多個人一起開發的,大型的系統還可能由多個不同的團隊分包進行開發。多人進行協作開發時,代碼的管理就顯得及為重要,需要藉助代碼管理工具的輔助,這種工具又稱為版本控制系統。
目前主流的版本控制系統有:
CVS:是一個用於代碼版本控制的自由軟體,它是一個比較早出現的工具,由於它有很多自身的缺陷,現在幾乎被SVN所取代了。
**SVN:**SVN是Subversion的簡稱,它是集中式的版本控制系統。SVN繼承了CVS的基本思想,包含了CVS的幾乎所有功能。你可以認為SVN是CVS的升級版(但實際上它們完全是兩個軟體)。
**GIT:**GIT是分布式的版本控制系統。相信玩過開原始碼的都知道github吧,它就是一個基於git的代碼託管平台。
關於SVN與GIT的區別,可參考:GIT和SVN之間的五個基本區別
本文假設您已經對SVN有基本的瞭解和掌握,並用TortoiseSVN用戶端進行過代碼的遷入、選出、更新等功能進行團隊的協作開發。如果沒有這方面的知識,建議先查閱其它的相關資料,以對SVN有大致的瞭解後再來閱讀本文。 VisualSVN的簡單介紹與下載安裝 簡介
VS2010有一個內建的版本管理工具,也就是菜單中的Team(團隊協作),但用過的人應該都知道非常難用,與SVN和GIT相比已經被甩出幾條街了。
所以很多的公司或團隊會選擇SVN來進行代碼的管理,安裝一個SVN的用戶端進行的遷入與遷出。但可能很少人知道VS上還有一個外掛程式可以協助我們更好地使用SVN,它就是VisualSVN。
VisualSVN是一個用在Visual Studio上的外掛程式,SVN的用戶端TortoiseSVN(SVN有一個伺服器Server用於集中管理資產庫,有一個用戶端Client用於團隊的每一個成員進行訪問資產庫、提交代碼和遷出代碼等。)是一個版本控制工具。VisualSVN是基於TortoiseSVN的,也就是說VisualSVN要調用TortoiseSVN軟體的功能,所以要使用VisualSVN,必須同時安裝VisualSVN和TortoiseSVN。 下載
VisualSVN的官方下載地址:
https://www.visualsvn.com/visualsvn/download/
SVN的官方下載地址:
http://tortoisesvn.net/downloads.html
**注意:**SVN的版本要和VisualSVN的版本對應,也就是要下載給定的VisualSVN版本建議的SVN的版本。如VisualSVN5.1.2可用的SVN版本是1.8.x、1.9.x,建議的SVN版本是 TortoiseSVN 1.9.2. 安裝
安裝這個很簡單,一般先安裝TortoiseSVN再安裝VisualSVN。選擇預設的設定就可以,這個不多說了。 VisualSVN的常用功能介紹 向伺服器上傳一個工程
關於SVN環境的搭建是另外一個主題,你可以自己去尋找相關的資料,這裡只講VS相關的東西。您也可以參考這篇文章:Windows下的SVN環境搭建詳解,個人覺得寫的還可以。要是在公司裡一般會有已經搭建好的SVN環境,你只需要一個代碼存放的地址。
現在假設你已經搭建好了SVN的環境,有一個SVN的工作地址:svn://localhost/CppRepos(這是我本SVN機伺服器的庫地址,遠程伺服器的地址也是一樣的),有一個SVN的使用者名稱(luoweifu)和密碼(svn_luoweifu)。現在要把本機D:\CppWorkspace\DesignPattern下的DesignPattern工程上傳到伺服器,以後在VS2010下開發這個工程並在VS2010提交和更新代碼。基本的操作流程如下: 用VS2010開啟DesignPattern工程。安裝完VisualSVN外掛程式後,VS上會多一個功能表項目VisualSVN。
選擇菜單VisualSVN\Add Solution to Subversion…
選擇要添加工程的本地路徑,一般會自動給你設定好,如果路徑是正確的就直接一步。
圖 1:Add Solution to Subversion 1
這裡我們選擇Existing Repository,因為我們已經有一個SVN的地址,如果伺服器沒有建立對應的庫可選擇New Repository建立一個新的庫。
圖 2:Add Solution to Subversion 2
這裡填入你的SVN的地址:svn://localhost/CppRepos
圖 3:Add Solution to Subversion 3
點擊Import就可以了,這時你的VS會有一個Pending Changes的視圖,如果沒有可通過View\Other Windows\Pending Changes菜單調出來。這個視圖將顯示所有你要添加到伺服器的檔案。
圖 4:Add Solution to Subversion 4
Import後只是將本地的檔案與伺服器上的地址做了映射,並沒有真正將檔案上傳到伺服器。你需要將所有檔案提交(Commit),才是真正上傳到伺服器。選中Pending Changes中的所有檔案並右鍵Commit。
圖 5:Add Solution to Subversion 5
對話方塊的底部會顯示你要提交的所有檔案,你可以勾選要提交或不提交哪些檔案。寫上你提交的原因或備忘(這個很重要,一定要有這樣的習慣,以便後期查看記錄時一看就能知道你做了什麼),然後點擊Ok就可以了。
圖 6:Add Solution to Subversion 6
第一次提交會要求輸入使用者名稱和密碼,輸入你的SVN使用者名稱和密碼就可以了。
圖 7:Add Solution to Subversion 7
VisualSVN的主要功能
VisualSVN有TortoiseSVN的幾乎所有功能,它的作用就是將TortoiseSVN整合到VS中,這樣代碼的編碼、代碼的管理就可以都在一個IDE中進行,而不用每次提交或更新代碼都要切換到TortoiseSVN去做。這跟Java的MyEclipse、Intellij IDEA的SVN外掛程式是類似的。
添加VisualSVN外掛程式後,VisualSVN菜單會有TortoiseSVN的幾乎所有功能。如將Solution添加到伺服器,從伺服器獲得Solution,更新代碼、提交代碼,打分支、合并分支等,如下圖。這些功能只要你對SVN有大致的瞭解,模索模索就會用了,不再過多的介紹。
圖 8:VisualSVN的整體視圖
Pending Chages視圖將顯示所有新添加、刪除或被改動的檔案。
Solution Explorer視圖對不同狀態的檔案也會用不同顏色的圓點標註:綠色表示未做更改的檔案,黃色表示已做改動或新添加的檔案。
C++工程上傳伺服器要忽視的檔案
在帶你玩轉Visual Studio——帶你建立一個工程一文中講到了C++工程中的各種類型檔案,然後我們在代碼的版本控制時有很多檔案和目錄並不需要上傳到伺服器。因為伺服器中只需要存一些有用的資料和檔案,一些無用的輔助性檔案(如pch檔案,Debug目錄等)只會給伺服器和管理帶來負擔。這裡將列出需要上傳和不需要上傳的檔案類型。 需要上傳的檔案類型:
h: 標頭檔
cpp: 源檔案
txt: 說明檔案,如readme
rc: 資源檔
rc2: 資源檔
ico: 表徵圖,如logo等
sln: 解決方案工程檔案
vcxproj: 工程檔案
filters: 檔案過慮器 不要上傳的檔案類型
Debug、Release等編譯結構目錄
ipch目錄
aps: last resource editor state
exe: build result
idb: build state
ipch: build helper
lastbuildstate: build helper
lib: build result. Can be 3rd party
log: build log
manifest: build helper. Can be written yourself.
obj: build helper
pch: build helper
pdb: build result
res: build helper
sdf: intellisense dbase
suo: solution user options
tlog: build log
user: debug settings. Do preserve if just one dev or custom debug settings
如果用TortoiseSVN進行管理,需要手動添加ignore屬性將不需要上傳的檔案忽略掉。在你工程目錄裡,右鍵->TortoiseSVN->Properties->New->Other,彈出的對話方塊中Property name中選擇svn:ignore,Property value中填入要忽略的內容(這裡可以使用能配符),如下圖。
圖 9:添加ingore屬性
用VisualSVN進行上傳Solution時,預設就幫你設定好了,將不需要的檔案給屏蔽了。這也是VisualSVN的一大好處。
上一篇回顧:
帶你玩轉Visual Studio——帶你高效開發
下一篇要講述的內容:
帶你玩轉Visual Studio——帶你發布自己的工程庫