1.為什麼要用VisualSVN Server,而不用Subversion?
回答:
因為如果直接使用Subversion,那麼在Windows 系統上,要想讓它隨系統啟動,就要封裝SVN Server為windws service,還要通過修改設定檔來控制使用者權限,另外如果要想以Web方式【http協議】訪問,一般還要安裝配置Apache,如果是新手,豈不是很頭痛?而VisualSVN Serve整合了Subversion和Apache,省去了以上所有的麻煩。安裝的時候SVN Server已經封裝為windws service,Apache伺服器的配置也只是在映像介面上,指定認證方式、訪問連接埠等簡單操作;另外,使用者權限的管理也是通過映像介面來配置。
2.為什麼不用TFS?
回答:
因為我們一開始就是用Subversion和TortioseSVN,所以就沒有更換其他的軟體。至於TFS至今沒有用過,其實,我只是看了一些的文章而已,對它也不瞭解。
3.VisualSVN Server是免費的嗎?
回答:
是的,VisualSVN Server是免費的,而VisualSVN是收費的。VisualSVN是SVN的用戶端,和Visual Studio整合在一起, VisualSvn Server是SVN的伺服器端,包括Subversion、Apache和使用者及許可權管理,優點在上面已經說過了。
好了,言歸正傳,正式開始我們今天的教程。
一、VisualSVN Server的配置和使用方法【伺服器端】
安裝好VisualSVN Server後【安裝過程看這裡】,運行VisualSVN Server Manger,下面是啟動介面:
好的,下面我來添加一個程式碼程式庫【Repository】,如:
按所示,建立新的程式碼程式庫,在所示的文字框中輸入程式碼程式庫名稱:
注意:中的CheckBox如果選中,則在程式碼程式庫StartKit下面會建立trunk、branches、tags三個子目錄;不選中,則只建立空的程式碼程式庫StartKit。
點擊OK按鈕,程式碼程式庫就建立成功了。
建立完程式碼程式庫後,沒有任何內容在裡面。我會在這個教程的第二部分說明如何遷入原始碼。
下面,我們開始安全性設定,在左側的Users上點擊右鍵:
輸入上面的資訊,點擊OK,我們就建立一個使用者了。按照上面的過程,分別添加使用者Developer1、tester1、manager1,好了,我們開始添加這些使用者到我們剛才建立的項目裡:
點擊中的"Add..."按鈕,在中選擇我們剛才添加的使用者,點擊OK按鈕:
說明:大家可能注意到了中的Groups,是的,你也可以先建立組,把使用者添加到各個組中,然後對組進行授權,操作比較簡單,在此略過。
按照所示,分別對使用者【或組】進行授權:
點擊"確定"按鈕,上面的使用者就具有了訪問StartKit程式碼程式庫的不同許可權。
因為使用者starter在團隊中是新來者,不希望他向程式碼程式庫中提交新代碼,所以他只能讀取程式碼程式庫中的代碼,不能提交代碼。tester1是測試人員,不負責代碼編寫,所以也是唯讀許可權。而Developer1和manager1是開發人員和專案經理,自然具有讀、寫的許可權。
在實際的項目開發過程中,Developer和tester往往不可能只有一個人,這時候使用組來授權更加方便,這個大家可以自己練習一下。
二、TotoiseSVN的基本使用方法
在 專案管理實踐教程一、工欲善其事,必先利其器【Basic Tools】中,我已經講解了怎樣安裝TortoiseSVN。在上面的講解中已經講了怎麼使用VisualSVN Server了,今天我要講的是,TortoiseSVN的簡單使用方法。
一、簽入原始碼到SVN伺服器
假如我們使用Visual Studio在檔案夾StartKit中建立了一個項目,我們要把這個項目的原始碼簽入到SVN Server上的程式碼程式庫中裡,首先右鍵點擊StartKit檔案夾,這時候的右鍵菜單如所示:
圖2-2-1
點擊Import,彈出下面的表單,其中http://zt.net.henu.edu.cn 是伺服器名,svn是代碼倉庫的根目錄,StartKit是我們在上個教程中添加的一個程式碼程式庫:
說明:左下角的CheckBox,在第一次簽入原始碼時沒有用,但是,在以後你提交代碼的時候是非常有用的。
圖2-2-2
點擊OK按鈕,會彈出下面的表單,要求輸入憑據:
圖2-2-3
在上面的表單中輸入使用者名稱和密碼,點擊OK按鈕:
圖2-2-4
如所示,好了,原始碼已經成功簽入SVN伺服器了。這時候團隊成員就可以遷出SVN伺服器上的原始碼到自己的機器了。
二、簽出原始碼到本機
在本機建立檔案夾StartKit,右鍵點擊Checkout,彈出如的表單:
圖2-2-5
在中URL of Repository:下的文字框中輸入svn server中的程式碼程式庫的地址,其他預設,點擊OK按鈕,就開始簽出原始碼了。
說明:中的Checkout Depth,有4個選項,分別是遷出全部、只簽出下一級子目錄和檔案、只簽出檔案、只簽出空項目,預設的是第一項。上面的例子中,我們也可以使用web的方式存取碼庫,在瀏覽器中輸入http://zt.net.henu.edu.cn/svn/StartKit/
這時候也會彈出對話方塊,要求輸入使用者名稱和密碼,通過驗證後即可瀏覽程式碼程式庫中的內容。
搞定!原始碼已經成功簽出到剛才建立的StartKit目錄中。
開啟StartKit目錄,可以看到如的檔案夾結構:
圖2-2-5
一旦你對檔案或檔案夾做了任何修改,那麼檔案或檔案夾的顯示圖片機會發生變化。中我修改了其中的二個檔案:
圖2-2-7
大家看一下不同狀態所對應的圖片:
圖2-2-8
我們已經知道怎麼將原始碼簽入到SVN伺服器,怎麼從伺服器簽出代碼到本機,也簡單瞭解了不同狀態所對應的圖案啦。
三、提交修改過的檔案到SVN伺服器
上面的圖2-2-7中,我修改了位於Model檔案中的二個檔案ImageInfo.cs和NewsInfo.cs,下面示範如何提交到SVN伺服器。
注意:提交原始碼到伺服器時,一定確保原生代碼是最新版本,否則可能提交失敗,或者造成版本衝突。
在Model檔案夾上點擊右鍵或在Model檔案下的空白處點擊右鍵,點擊SVN Commit…彈出下面的表單:
圖2-2-9
點擊OK按鈕後,彈出如的表單:
圖2-2-10
四、添加新檔案到SVN伺服器
我們在Model檔案下添加一個新的類檔案UserInfo.cs,在Model檔案下的空白處點擊右鍵,點擊SVN Commit…,和上面講的提交修改過的檔案到SVN伺服器一樣,就可以了。
另外也可以在檔案UserInfo.cs上點擊右鍵,點擊TortoiseSVN=>>Add,彈出如的表單:
圖2-2-11
選中UserInfo.cs檔案,點擊OK按鈕,這樣並沒有將這個檔案提交到SVN伺服器,只是將這個檔案標記為原始碼庫庫中的檔案,並將其狀態置為修改狀態。之後,我們要再SVN Commit這個檔案一次,才可以將其真正提交到SVN伺服器上的程式碼程式庫中。
上面講是添加檔案,實際上,添加檔案夾的步驟也是一樣的,這裡就不說了。
五、更新機器碼與SVN伺服器上最新的版本一致
這個也很簡單,只要在需要更新的檔案夾上點擊右鍵或在該檔案下的空白處點擊右鍵,點擊SVN Update,就可以了。
注意:更新操作可能會因為版本衝突而失敗,這是可以使用合并【Merge】或其他方法解決;也可能因為鎖定【Get Lock】而失敗,這是需要先解鎖【Release Lock】。
六、重新命名檔案或檔案夾,並將修改提交到SVN伺服器
只要在需要重新命名的檔案或檔案夾上點擊右鍵,點擊TortiseSVN=>>Rename…,在彈出的表單中輸入新名稱,點擊OK按鈕,就可以了。此方法也不是直接重新命名,而是將該檔案或檔案夾的名稱標記為重新命名後名稱,也需要我們使用SVN Commit提交到SVN伺服器後才真正重新命名。
七、刪除檔案或檔案夾,並將修改提交到SVN伺服器
最簡單就是,你直接刪除檔案或檔案夾,然後使用SVN Commit提交更新到SVN伺服器。另外一種方法是在你要刪除的檔案或檔案夾上點擊右鍵=>>TortoiseSVN=>>Delete刪除,此方法也不是直接刪除,而是將該檔案或檔案夾的狀態置為刪除,也需要我們使用SVN Commit提交到SVN伺服器後才真正刪除。
說明:實際上,從你把原始碼遷簽入SVN伺服器開始,每一個版本的資料和檔案,就算是你已經刪除了的,也都可以隨時遷出。
以上只是TortoiseSVN最簡單的幾個功能,其實他的功能遠不止這些,其他的功能大家可以在使用的過程中慢慢體會,有些功能我會在下面的教程中使用到,到時候會和大家講清楚用法。
注意:向SVN伺服器提交原始碼的時候,一定不要提交bin、obj等檔案夾,否則會很麻煩。但是web項目的bin目錄除外,但是web項目的bin目錄中的引用其他項目而產生的dll不需要提交。
一個好習慣:如果項目中引用了其他的第三方的程式集,比如EnterpriseLibrary、FCKEditor等,這時候不要簡單從他們的安裝位置引用,而是在你的解決方案下,添加一個Library的目錄,把需要的程式集複製到這裡,然後從Library目錄引用,這樣有什麼好處,自己想一想吧!
如果大家有什麼問題,儘管跟帖提問,我一定及時回答。
好了,今天就先寫到這裡吧,本來說這部分準備寫一篇Blog,可是現在寫了這麼長,還只是說了一點很基本的東西而已,呵呵……
如果你對我講解的這些內容不熟悉,建議你從頭開始看這個系列的教程:專案管理實踐系列教程。