藉助GoogleCode構建SVN服務器對項目進行版本控制

說到源碼管理,CVS,VSS,SVN,TFS大家在公司可能都用的比較多了。但是在公司的環境基本都是在局域網中或者是專線連結到遠程服務器來使用。平時自己在家和朋友一些寫一些代碼的時候都苦於沒有代碼管理工具,沒有網絡環境,而不能不把代碼傳來傳去,很是麻煩。不過Google code提供了免費的SVN空間,主要註冊了GMAIL,然後就可以使用SVN進行源碼管理,和其他人共同開發了。

網上有介紹的,不過我看了都不怎麼詳細,自己摸索了下,寫下來大家分享下。

一 訪問Google code
Google code的地址是 http://code.google.com/  ,如果使用cn去訪問好像訪問不了,我這裏是一片空白。管理項目的話可以直接使用http://code.google.com/hosting/ 地址訪問。用Gmail登錄進去,頁面的中間有【Create a new project 】,點擊以後就可以創建項目了。

 

二 創建自己的項目
在創建項目的頁面,填寫項目名,概要和描述,其中項目名開頭要小寫,還不能有空格和其他符號。然後就是選擇版本管理系統,證書等等,這些我也不懂,隨便選吧,反正這有選好了,【Create Project】纔可用。這裏要注意的是項目名字可能衝突。如果創建成功就可以進入項目管理界面

 

三 項目管理
項目管理中,上方的菜單【Project Home】可以看到項目的概述和描述。點擊【Source】就可以進行源碼的管理。其中有2個地址,一個是Https開頭的,一個是http的,https開頭的是帶加密的,所以如果要commit新的代碼的時候就需要使用這個地址。而如果僅僅是取得代碼可以只使用http開頭的地址。

使用https的地址的時候需要提供用戶名和密碼,這裏的用戶名是Gmail的用戶名,而密碼是Google給每個項目生成的,而非是Gmail的密碼。點擊【When prompted, enter your generated googlecode.com password 】後面的藍色連接可以看到密碼。這個密碼是你所有項目的密碼,而不是每個項目一個密碼。

 
四 用戶管理
項目建立好以後就可以把其他人加入到項目中,這樣就可以共同開發了。首先點擊上方的【Administer】,然後點【Project members】,在下面填入要加入的用戶Gmail就可以了。有Project owners,Project committers,Project contributors。具體解釋右側都有。點擊保存後,其他用戶登錄後,在右上方的【My Favorite】下就可以看到自己加入的項目了。然後按三中介紹的方法找到密碼。

五 其他管理
Google Code還提供了wiki等功能,我沒用上,所以不是太瞭解。

六 安裝客戶端和VS插件
上面的工作做好後就是上傳源碼和文檔。但是我找了半天也不知道怎麼上傳。以爲是直接網頁上上傳,原來也要安裝SVN客戶端。在這裏

http://tortoisesvn.net/downloads  可以下載到最新的TortoiseSVN,這個應該是目前用的最多的SVN客戶端軟件了。E文不好的朋友上面還提供了中文語言包。

安裝完客戶端後需要重啓電腦,然後就可以遠程連接到SVN服務器了。其中URL就填寫Google 提供的哪個https的URL地址,然後填寫用戶名(Gmail)和密碼(項目密碼),保存後就OK了。客戶端可以支持連接多個URL,每次啓動的時候可以選擇要連接到那一個。

 

支持SVN的VS插件我使用的是AnkhSvn,http://ankhsvn.open.collab.net/servlets/ProjectDocumentList?folderID=198 這裏可以下載到最新版本。目前可以支持到VS2010,之前使用老版本對VS2008支持不好,文件狀態不對,而且不能提交,換到最新版的時候就好了。安裝的時候配置VS要比較長時間,不要以爲是死掉了。

如果只安裝AnkhSvn而不安裝TortoiseSVN也是可以的,不過你在VS中會發現,操作的功能少了很多,比如分支,合併等等。

 

七 使用VS進行開發和源碼管理
進入到VS中,打開【工具】--【選項】--【Source Control】,默認應該是已經配置好了爲AnkhSvn。然後可以點擊【文件】-【Subvwrsion】打開服務器上的源碼。和其他工具一樣,要選擇一個本地路徑來保存。

 

1:文件狀態介紹

藍色小勾:Check out狀態;橙色小勾:文件被修改狀態;橙色小方塊:文件修改被保存;加號:新添加文件。

2:SNV版本控制

和VSS不同的時,VSS默認是鎖住的狀態,需要手動Check Out,而SVN是自動Check Out。那麼這樣不是會有衝突嗎,其實這個和VSS允許多人牽出是一樣的。在你Commit的時候,會檢查版本,會自動合併或提示衝突或是版本過期等等。

 

獲取最新代碼:這個不用說了就是從服務器上拿最新代碼,但是如果你修改了文件,然後拉最新代碼,這個時候系統會自動吧你修改的不部分和最新代碼進行合併,如果有衝突會提示,要修修改衝突。

獲取指定版本代碼:這個可以通過查看歷史,或者指定版本號來拉去指定版本的代碼。這是同樣會合併代碼。需要注意的是,SVN的版本號和VSS不同,是全局版本號,而不是每個文件有一個版本號。這個要特別注意,因爲你會發現一個文件版本號可能是跳躍的。

Switch:有這樣一個功能,可以把當前版本切換爲制定的版本,和獲取指定版本不同,他也會自動合併不同的地方。

Revert:恢復功能,恢復到修改前的狀態。這個要注意的是,如果你對文件修改,然後獲取了最新代碼,然後恢復,這個時候是恢復到最新版本,而不是修改前的那個版本。這點要注意

版本衝突:這裏版本衝突有2種情況,

如果你當前版本爲1,服務器版本爲2,你修改或提交,服務器會提示你本地版本過期了,你可以拉最新代碼,並解決衝突後再次提交;

如果你當前版本爲2,服務器版本爲2,而你從服務器獲取版本1的代碼,修改後,然後提交,這個時候是不會提示版本過期的,會覆蓋掉服務器上的版本2,而成爲版本3。這樣是會沖掉代碼的。

鎖:SVN提供了鎖的功能,就和VSS的單用戶Check out是一樣的,不能同時修改。但是目前Google Svn不提供鎖的功能,所以沒有辦法使用了。

八 SVN資料
以前沒有使用過SVN的源碼管理,所以有些地方感覺不一樣。關於SVN的版本控制的方法和SVN介紹可以參考一下網站

http://www.subversion.org.cn/svnbook/1.4/svn.basic.vsn-models.html