1、SVN服務端web
一、VisualSVN Server下載:apache
http://download.csdn.net/detail/jiminull/4448874windows
或瀏覽器
http://www.visualsvn.com/server/download/安全
VisualSVN Server是免費的服務器
二、VisualSVN Server安裝:svn
下載完VisualSVN Server後,只要雙擊VisualSVN Server安裝文件,按步驟點擊下一步安裝便可,VisualSVN Server捆綁安裝了Apache,免去了你安裝apache的麻煩。具體能夠參照官網,安裝部分英語比較簡單,其實不看英,你只要點一步再配一下安裝路徑就徹底OK了。同時VisualSVN Server安裝步驟中涉及了部分VisualSVN Server配置信息,我會在VisualSVN配置部分詳細介紹,VisualSVN Server安裝完畢後,即會跳出VisualSVN配置界面,以下圖工具
三、VisualSVN Server配置:測試
運行VisualSVN Server Manger,下面是啓動界面:google
下面我來添加一個代碼庫【Repository】,以下圖:
按上圖所示,建立新的代碼庫,在下圖所示的文本框中輸入代碼庫名稱:
注意:上圖中的CheckBox若是選中,則在代碼庫StartKit下面會建立 trunk、branches、tags三個子目錄;不選中,則只建立空的代碼庫StartKit。
點擊OK按鈕,代碼庫就建立成功了。
建立完代碼庫後,沒有任何內容在裏面。我會在這個教程的第二部分說明如何遷入源代碼。
下面,咱們開始安全性設置,在左側的Users上點擊右鍵:
輸入上面的信息,點擊OK,咱們就建立一個用戶了。按照上面的過程,分別添加用戶 Developer一、tester一、manager1,好了,咱們開始添加這些用戶到咱們剛纔建立的項目裏:
點擊上圖中的"Add..."按鈕,在下圖中選擇咱們剛纔添加的用戶,點擊OK按鈕:
說明:你們可能注意到了下圖中的Groups,是的,你也能夠先建立組,把用戶添加到各個組 中,而後對組進行受權,操做比較簡單,在此略過。
點擊"肯定"按鈕,上面的用戶就具備了訪問StartKit代碼庫的不一樣權限。
由於用戶starter在團隊中是新來者,不但願他向代碼庫中提交新代碼,因此他只能讀取代 碼庫中的代碼,不能提交代碼。tester1是測試人員,不負責代碼編寫,因此也是隻讀權限。而Developer1和manager1是開發人員和項目 經理,天然具備讀、寫的權限。
在實際的項目開發過程當中,Developer和tester每每不可能只有一我的,這時候使 用組來受權更加方便,這個你們能夠本身練習一下。
2、SVN客戶端
VisualSVN客戶端是收費的,因此咱們安裝TortoiseSVN客戶端
TotoiseSVN在64位系統和32位系統的客戶端是不兼容的,請下載適合的版本。
下載地址:
32位:http://download.csdn.net/detail/jiminull/4442642
63位:http://download.csdn.net/detail/jiminull/4442645
TotoiseSVN 的基本使用方法:
一、簽入源代碼到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=>& gt;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目錄引用,這樣有什麼好處,本身想想吧!
Tortoise SVN 客戶端使用經驗小結:
1. export 和check out
export 下載源代碼
用法:
一、新建一個空的文件夾,右鍵點擊它,能夠看到TortoiseSVN菜單以及上面的SVN Checkout。
二、不用管這個Checkout,咱們選擇TortoiseSVN菜單下的Export...,接着它會讓你輸入url。
三、好比輸入【迷宮探寶】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk /
四、其餘選項不須要更改,Omit externals不要勾選,HEAD Revision選中表示最新的代碼版本,接着點擊OK便可將代碼導出到這個目錄中:)
check out 意思簽出,雖然和Export的效果同樣是把代碼從服務器下載到本地,可是Checkout有驗證的功能,Checkout到某處的代碼,將會被 TortoiseSVN監視,裏面的文件能夠享受各類SVN的服務。
2 .每次提交代碼須要注意哪些問題
若是你更新了目錄中的文件,提交代碼須要用到commit功能,commit的功能不只僅是上傳,他會和服務器上面的文件進行對比,假如你更新了某個文件而服務器上面也有人更新了這個文件,而且是在你checkout以後作的更新,那麼它會嘗試將你的更新和他人的更新進行融合(merge),假如自動 merge不成功,那麼報告conflict,你必須本身來手動merge,也就是把你的更新和別人的更新無衝突的寫在一塊兒。
commit的時候,最好填寫Log信息,這樣保證別人能夠看到你的更新究竟作了寫什麼。這就至關於上傳文件而且說明本身作了那些修改,多人合做的時候log很是重要。
TortoiseSVN的commit只會上傳原先checkout而後又被修改了的文件,假如你新加入了某些文件,須要右鍵點擊文件選擇Add,然 後文件上面會出現一個加號,在下次commit的時候它就會被upload而且被標記爲綠色對勾。沒有綠色對勾的文件不會被commit。
假如你須要給帶有綠色對勾文件更名或者移動它的位置,請不要使用windows的功能,右鍵點擊它們,TortoiseSVN都有相應的操做。想象這 些文件已經不在是你本地的東西,你的一舉一動都必須讓Tortoise知道。
假如修改了某個文件可是你後悔了,能夠右鍵點擊它選擇Revert,它將變回上次checkout時候的狀況。或者Revert整個工程到任意一個從 前的版本.
下面描述在使用Commit時的幾個注意點:
-------------若有多個文件須要同時提交,同時文件在不一樣的目錄下,必須找到這些文件的最短目錄上點擊 Commit,TortoiseSVN會搜索被點擊目錄以及該目錄下全部的文件,並將修改變更的文件羅列在列表中。
-------------仔細查看列表中的文件,肯定哪些文件時須要更新的,若是不須要更新某個已經變化了的文件,只須要在該文件上點擊右鍵,選擇 還原操做;選擇須要新增的文件,不要將臨時文件添加到版本庫中。
-------------如遇到文件衝突(衝突:要提交的文件已被其餘人改動並提交到版本庫中)要啓用解決衝突功能。
3. 如何保持本地版本和服務器版本同步
使用update來同步本地和服務器上的代碼。一樣是右鍵選擇SVN update,全部的更改就會從服務器端傳到你的硬盤。注意,假如別人刪除了某個文件,那麼更新以後你在本地的也會被刪除。
若是本地的代碼已經被修改,和commit同樣會先進行merge,不成功的話就會報告conflict
4 如何在同一個在一個工程的各個分支或者主幹之間切換
使用tortoise SVN-->switch
在URL中輸入branch或trunk的url地址
5.如何比較兩個版本之間的差異
本地更改
若是你想看到你的本地副本有哪些更加,只用在資源管理器中右鍵菜單下選TortoiseSVN→ 比較差別。
與另一個分支/標籤之間的差別
若是你想查看主幹程序(假如你在分支上開發)有哪些修改或者是某一分支(假如你在主幹上開發)有哪些修改,你可使用右鍵菜單。在你點擊文件的同時按 住Shift鍵,而後選擇TortoiseSVN→ URL比較。在彈出的對話框中,將特別顯示將與你本地版本作比較的版本的URL地址。
你還可使用版本庫瀏覽器,選擇兩個目錄樹比較,也許是兩個標記,或者是分支/標記和最新版本。郵件菜單容許你使用比較版原本比較它們。閱讀第 5.9.2 節 「比較文件夾」以便得到更多信息。
與歷史版本的比較差別
若是你想查看某一特定版本與本地拷貝之間的差別,使用顯示日誌對話框,選擇要比較的版本,而後選擇在右鍵菜單中選與本地拷貝比較差別
兩個歷史版本的比較
若是你要查看任意已提交的兩個歷史版本之間的差別,在版本日誌對話框中選擇你要比較的兩個版本(通常使用 Ctrl-更改),而後在右鍵菜單中選比較版本差別
若是你在文件夾的版本日誌中這樣作,就會出現一個比較版本對話框,顯示此文件夾的文件修改列表。閱讀第 5.9.2 節 「比較文件夾」以便得到更多信息。
提交全部修改
若是你要在一個視窗中查看某一版本的全部更改,你可使用統一顯示全部比較 (GNU 片斷整理)。它將顯示全部修改中的部份內容。它很難顯示一個全面清晰的比較,可是會將全部更改都集中顯示出來。在版本日誌對話框中選擇某一版本,而後在右鍵菜單中選擇統一顯示全部比較。
文件差別
若是你要查看兩個不一樣文件之間的差別,你能夠直接在資源管理器中選擇這兩個文件(通常使用 Ctrl-modifier),而後右鍵菜單中選TortoiseSVN→ 比較差別。
WC文件/文件夾與URL之間的比較差別
若是你要查看你本地拷貝中的任一文件與版本庫中任一文件之間差別,
譴責信息之間的比較差別
若是你要查看的不只是比較差別並且包括修改該版本的做者,版本號和日期,你能夠在版本日誌對話框中綜合比較差別和譴責信息。這裏有更多詳細介紹第 5.20.2 節 「追溯不一樣點」。
比較文件夾差別
TortoiseSVN 自帶的內置工具不支持查看多級目錄之間的差別,但你可使用支持該功能的外置工具來替代。在這裏 第 5.9.4 節 「其餘的比較/合併工具」咱們能夠介紹一些咱們使用過的工具。
6.提交代碼時怎樣知道本身改了哪些文件,別人改了哪些文件
7. 如何知道某個文件的某一行是誰在哪一個版本修改的
8. 如何爲一個SVN主工程創建分支或tag
建立分支使用步驟:
一、選擇你要產生分支的文件,點擊鼠標右鍵,選擇[分支/標記...]
二、在[至URL(T)]輸入框中將文件重命名爲你的分支文件名,輸入便於區分的日誌信息,點擊確認。
三、在SVN倉庫中會複製一個你所指定的文件,文件名稱就是你所命名的,可是在你的本地目錄上看不到新建的分支文件名,要使你的文件更新做用到你的分支上,你必須選擇文件,點擊鼠標右鍵,選擇[切換...],選擇你重命名的文件,點擊肯定便可。這樣你的本地文件就和分支文件關聯上了,不要奇怪,這時本地目錄上看到的文件名仍然爲舊的文件名。
經驗小結:
一、若是操做的文件以前還未提交,而你又想把文件提交到新的分支上,記得必定要選擇切換
二、SVN分支的管理實際上就是把不一樣的分支用不一樣的文件保存,所以你在取得新版本的時候會發現,不一樣分支的最新文件也會被獲取下來。
建立tag操做,至關於把當前的代碼版本複製一份到其餘地方,而後以這個地方爲出發點進行新的開發,與原來位置的版本互不干擾。
對於branches、tags、trunk這三個目錄,並非subversion必需的,而是被總結的一種良好的團隊開發習慣,其使用方法爲:
一、開發者提交全部的新特性到主幹。 每日的修改提交到/trunk:新特性,bug修正和其餘。
二、這個主幹被拷貝到「發佈」分支。 當小組認爲軟件已經作好發佈的準備(如,版本1.0)而後/trunk會被拷貝到/branches/1.0。
三、項目組繼續並行工做,一個小組開始對分支進行嚴酷的測試,同時另外一個小組在/trunk繼續新的工做(如,準備2.0),若是一個bug在任何一 個位置被發現,錯誤修正須要來回運送。然而這個過程有時候也會結束,例如分支已經爲發佈前的最終測試「停滯」了。
四、分支已經做了標籤而且發佈,當測試結束,/branches/1.0做爲引用快照已經拷貝到/tags/1.0.0,這個標籤被打包發佈給客戶。
五、分支屢次維護。當繼續在/trunk上爲版本2.0工做,bug修正繼續從/trunk運送到/branches/1.0,若是積累了足夠的 bug修正,管理部門決定發佈1.0.1版本:拷貝/branches/1.0到/tags/1.0.1,標籤被打包發佈。
通常創建最初的repository時,就建好這三個目錄,把全部代碼放入/trunk中,如:要將project1目錄下的代碼導入 repository,project1的結構就是:project1/branches,project1/tags,project1 /trunk,project1/trunk/food.c,project1/trunk/egg.pc……,而後將project1目錄導入 repository,創建最初的資料庫。而後export回project1,做爲本地工做目錄。
轉載自:http://blog.csdn.net/jiminull/article/details/7763795