SVN操作

一般企業(yè)SVN配置:TortoiseSVN和VisualSVN Server黃金組合,最主要是免費(fèi)的
TortoiseSVN 客戶端 : 測試人員及開發(fā)人員使用
VisualSVN Server客戶端 :后臺人員使用

一、簽入源代碼到SVN服務(wù)器
假如我們使用Visual Studio在文件夾StartKit中創(chuàng)建了一個項目,我們要把這個項目的源代碼簽入到SVN Server上的代碼庫中里,首先右鍵點擊StartKit文件夾,這時候的右鍵菜單如下圖所示:
圖2-2-1


點擊Import,彈出下面的窗體,其中http://zt.net.henu.edu.cn 是服務(wù)器名,svn是代碼倉庫的根目錄,StartKit是我們在上個教程中添加的一個代碼庫:
說明:左下角的CheckBox,在第一次簽入源代碼時沒有用,但是,在以后你提交代碼的時候是非常有用的。
圖2-2-2
clip_image004

點擊OK按鈕,會彈出下面的窗體,要求輸入憑據(jù):
圖2-2-3
clip_image006

在上面的窗體中輸入用戶名和密碼,點擊OK按鈕:
圖2-2-4
clip_image008

如上圖所示,好了,源代碼已經(jīng)成功簽入SVN服務(wù)器了。這時候團(tuán)隊成員就可以遷出SVN服務(wù)器上的源代碼到自己的機(jī)器了。
二、簽出源代碼到本機(jī)
在本機(jī)創(chuàng)建文件夾StartKit,右鍵點擊Checkout,彈出如下圖的窗體:
圖2-2-5
clip_image010

在上圖中URL of Repository:下的文本框中輸入svn server中的代碼庫的地址,其他默認(rèn),點擊OK按鈕,就開始簽出源代碼了。
說明:上圖中的Checkout Depth,有4個選項,分別是遷出全部、只簽出下一級子目錄和文件、只簽出文件、只簽出空項目,默認(rèn)的是第一項。上面的例子中,我們也可以使用web的方式訪問代碼庫,在瀏覽器中輸入http://zt.net.henu.edu.cn/svn/StartKit/
這時候也會彈出對話框,要求輸入用戶名和密碼,通過驗證后即可瀏覽代碼庫中的內(nèi)容。
搞定!源代碼已經(jīng)成功簽出到剛才新建的StartKit目錄中。
打開StartKit目錄,可以看到如下圖的文件夾結(jié)構(gòu):
圖2-2-5
clip_image012

一旦你對文件或文件夾做了任何修改,那么文件或文件夾的顯示圖片機(jī)會發(fā)生變化。下圖中我修改了其中的二個文件:
圖2-2-7
clip_image014

大家看一下不同狀態(tài)所對應(yīng)的圖片:
圖2-2-8
clip_image016

我們已經(jīng)知道怎么將源代碼簽入到SVN服務(wù)器,怎么從服務(wù)器簽出代碼到本機(jī),也簡單了解了不同狀態(tài)所對應(yīng)的圖案啦。
三、提交修改過的文件到SVN服務(wù)器
上面的圖2-2-7中,我修改了位于Model文件中的二個文件ImageInfo.cs和NewsInfo.cs,下面演示如何提交到SVN服務(wù)器。
注意:提交源代碼到服務(wù)器時,一定確保本機(jī)的代碼是最新版本,否則可能提交失敗,或者造成版本沖突。
在Model文件夾上點擊右鍵或在Model文件下的空白處點擊右鍵,點擊SVN Commit…彈出下面的窗體:
圖2-2-9
clip_image018

點擊OK按鈕后,彈出如下圖的窗體:
圖2-2-10
clip_image020

四、添加新文件到SVN服務(wù)器
我們在Model文件下添加一個新的類文件UserInfo.cs,在Model文件下的空白處點擊右鍵,點擊SVN Commit…,和上面講的提交修改過的文件到SVN服務(wù)器一樣,就可以了。
另外也可以在文件UserInfo.cs上點擊右鍵,點擊TortoiseSVN=>>Add,彈出如下圖的窗體:
圖2-2-11
clip_image022

選中UserInfo.cs文件,點擊OK按鈕,這樣并沒有將這個文件提交到SVN服務(wù)器,只是將這個文件標(biāo)記為源代碼庫庫中的文件,并將其狀態(tài)置為修改狀態(tài)。之后,我們要再SVN Commit這個文件一次,才可以將其真正提交到SVN服務(wù)器上的代碼庫中。
上面講是添加文件,實際上,添加文件夾的步驟也是一樣的,這里就不說了。
五、更新本機(jī)代碼與SVN服務(wù)器上最新的版本一致
這個也很簡單,只要在需要更新的文件夾上點擊右鍵或在該文件下的空白處點擊右鍵,點擊SVN Update,就可以了。
注意:更新操作可能會因為版本沖突而失敗,這是可以使用合并【Merge】或其他方法解決;也可能因為鎖定【Get Lock】而失敗,這是需要先解鎖【Release Lock】。
六、重命名文件或文件夾,并將修改提交到SVN服務(wù)器
只要在需要重命名的文件或文件夾上點擊右鍵,點擊TortiseSVN=>>Rename…,在彈出的窗體中輸入新名稱,點擊OK按鈕,就可以了。此方法也不是直接重命名,而是將該文件或文件夾的名稱標(biāo)記為重命名后名稱,也需要我們使用SVN Commit提交到SVN服務(wù)器后才真正重命名。
七、刪除文件或文件夾,并將修改提交到SVN服務(wù)器
最簡單就是,你直接刪除文件或文件夾,然后使用SVN Commit提交更新到SVN服務(wù)器。另外一種方法是在你要刪除的文件或文件夾上點擊右鍵=>>TortoiseSVN=>>Delete刪除,此方法也不是直接刪除,而是將該文件或文件夾的狀態(tài)置為刪除,也需要我們使用SVN Commit提交到SVN服務(wù)器后才真正刪除。
說明:實際上,從你把源代碼遷簽入SVN服務(wù)器開始,每一個版本的數(shù)據(jù)和文件,就算是你已經(jīng)刪除了的,也都可以隨時遷出。
以上只是TortoiseSVN最簡單的幾個功能,其實他的功能遠(yuǎn)不止這些,其他的功能大家可以在使用的過程中慢慢體會,有些功能我會在下面的教程中使用到,到時候會和大家講清楚用法。
注意:向SVN服務(wù)器提交源代碼的時候,一定不要提交bin、obj等文件夾,否則會很麻煩。但是web項目的bin目錄除外,但是web項目的bin目錄中的引用其他項目而生成的dll不需要提交。
一個好習(xí)慣:如果項目中引用了其他的第三方的程序集,比如EnterpriseLibrary、FCKEditor等,這時候不要簡單從他們的安裝位置引用,而是在你的解決方案下,添加一個Library的目錄,把需要的程序集復(fù)制到這里,然后從Library目錄引用,這樣有什么好處,自己想一想吧!
Tortoise SVN 客戶端 基本用法

  1. export 和check out
    export 下載源代碼
    用法:
    1、新建一個空的文件夾,右鍵點擊它,可以看到TortoiseSVN菜單以及上面的SVN Checkout。
    2、不用管這個Checkout,我們選擇TortoiseSVN菜單下的Export...,接著它會讓你輸入url。
    3、比如輸入【迷宮探寶】的SVN地址是:http://game-rts-framework.googlecode.com/svn/trunk/
    4、其他選項不需要更改,Omit externals不要勾選,HEAD Revision選中表示最新的代碼版本,接著點擊OK即可將代碼導(dǎo)出到這個目錄中:)
    check out 意思簽出,雖然和Export的效果一樣是把代碼從服務(wù)器下載到本地,但是Checkout有驗證的功能,Checkout到某處的代碼,將會被TortoiseSVN監(jiān)視,里面的文件可以享受各種SVN的服務(wù)。
    2 .每次提交代碼需要注意哪些問題
    如果你更新了目錄中的文件,提交代碼需要用到commit功能,commit的功能不僅僅是上傳,他會和服務(wù)器上面的文件進(jìn)行對比,假如你更新了某個文件而服務(wù)器上面也有人更新了這個文件,并且是在你checkout之后做的更新,那么它會嘗試將你的更新和他人的更新進(jìn)行融合(merge),假如自動merge不成功,那么報告conflict,你必須自己來手動merge,也就是把你的更新和別人的更新無沖突的寫在一起。
    commit的時候,最好填寫Log信息,這樣保證別人可以看到你的更新究竟做了寫什么。這就相當(dāng)于上傳文件并且說明自己做了那些修改,多人合作的時候log非常重要。
    TortoiseSVN的commit只會上傳原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右鍵點擊文件選擇Add,然后文件上面會出現(xiàn)一個加號,在下次commit的時候它就會被upload并且被標(biāo)記為綠色對勾。沒有綠色對勾的文件不會被commit。
    假如你需要給帶有綠色對勾文件改名或者移動它的位置,請不要使用windows的功能,右鍵點擊它們,TortoiseSVN都有相應(yīng)的操作。想象這些文件已經(jīng)不在是你本地的東西,你的一舉一動都必須讓Tortoise知道。
    假如修改了某個文件但是你后悔了,可以右鍵點擊它選擇Revert,它將變回上次checkout時候的情況。或者Revert整個工程到任意一個從前的版本.
    下面描述在使用Commit時的幾個注意點:
    -------------如有多個文件需要同時提交,同時文件在不同的目錄下,必須找到這些文件的最短目錄上點擊Commit,TortoiseSVN會搜索被點擊目錄以及該目錄下所有的文件,并將修改變動的文件羅列在列表中。
    -------------仔細(xì)查看列表中的文件,確定哪些文件時需要更新的,如果不需要更新某個已經(jīng)變化了的文件,只需要在該文件上點擊右鍵,選擇還原操作;選擇需要新增的文件,不要將臨時文件添加到版本庫中。
    -------------如遇到文件沖突(沖突:要提交的文件已被其他人改動并提交到版本庫中)要啟用解決沖突功能。
  2. 如何保持本地版本和服務(wù)器版本同步
    使用update來同步本地和服務(wù)器上的代碼。同樣是右鍵選擇SVN update,所有的更改就會從服務(wù)器端傳到你的硬盤。注意,假如別人刪除了某個文件,那么更新之后你在本地的也會被刪除。
    如果本地的代碼已經(jīng)被修改,和commit一樣會先進(jìn)行merge,不成功的話就會報告conflict
    4 如何在同一個在一個工程的各個分支或者主干之間切換
    使用tortoise SVN-->switch
    在URL中輸入branch或trunk的url地址
    5.如何比較兩個版本之間的差別
    本地更改
    如果你想看到你的本地副本有哪些更加,只用在資源管理器中右鍵菜單下選TortoiseSVN→ 比較差異。
    與另外一個分支/標(biāo)簽之間的差異
    如果你想查看主干程序(假如你在分支上開發(fā))有哪些修改或者是某一分支(假如你在主干上開發(fā))有哪些修改,你可以使用右鍵菜單。在你點擊文件的同時按住Shift鍵,然后選擇TortoiseSVN→ URL比較。在彈出的對話框中,將特別顯示將與你本地版本做比較的版本的URL地址。
    你還可以使用版本庫瀏覽器,選擇兩個目錄樹比較,也許是兩個標(biāo)記,或者是分支/標(biāo)記和最新版本。郵件菜單允許你使用比較版本來比較它們。閱讀第 5.9.2 節(jié) “比較文件夾”以便獲得更多信息。
    與歷史版本的比較差異
    如果你想查看某一特定版本與本地拷貝之間的差異,使用顯示日志對話框,選擇要比較的版本,然后選擇在右鍵菜單中選與本地拷貝比較差異
    兩個歷史版本的比較
    如果你要查看任意已提交的兩個歷史版本之間的差異,在版本日志對話框中選擇你要比較的兩個版本(一般使用 Ctrl-更改),然后在右鍵菜單中選比較版本差異
    如果你在文件夾的版本日志中這樣做,就會出現(xiàn)一個比較版本對話框,顯示此文件夾的文件修改列表。閱讀第 5.9.2 節(jié) “比較文件夾”以便獲得更多信息。
    提交所有修改
    如果你要在一個視窗中查看某一版本的所有更改,你可以使用統(tǒng)一顯示所有比較 (GNU 片段整理)。它將顯示所有修改中的部分內(nèi)容。它很難顯示一個全面清晰的比較,但是會將所有更改都集中顯示出來。在版本日志對話框中選擇某一版本,然后在右鍵菜單中選擇統(tǒng)一顯示所有比較。
    文件差異
    如果你要查看兩個不同文件之間的差異,你可以直接在資源管理器中選擇這兩個文件(一般使用 Ctrl-modifier),然后右鍵菜單中選TortoiseSVN→ 比較差異。
    WC文件/文件夾與URL之間的比較差異
    如果你要查看你本地拷貝中的任一文件與版本庫中任一文件之間差異,
    譴責(zé)信息之間的比較差異
    如果你要查看的不僅是比較差異而且包括修改該版本的作者,版本號和日期,你可以在版本日志對話框中綜合比較差異和譴責(zé)信息。這里有更多詳細(xì)介紹第 5.20.2 節(jié) “追溯不同點”。
    比較文件夾差異
    TortoiseSVN 自帶的內(nèi)置工具不支持查看多級目錄之間的差異,但你可以使用支持該功能的外置工具來替代。在這里 第 5.9.4 節(jié) “其他的比較/合并工具”我們可以介紹一些我們使用過的工具。
    6.提交代碼時怎樣知道自己改了哪些文件,別人改了哪些文件
  3. 如何知道某個文件的某一行是誰在哪個版本修改的
  4. 如何為一個SVN主工程建立分支或tag
    創(chuàng)建分支使用步驟:
    1、選擇你要產(chǎn)生分支的文件,點擊鼠標(biāo)右鍵,選擇[分支/標(biāo)記...]
    2、在[至URL(T)]輸入框中將文件重命名為你的分支文件名,輸入便于區(qū)分的日志信息,點擊確認(rèn)。
    3、在SVN倉庫中會復(fù)制一個你所指定的文件,文件名稱就是你所命名的,但是在你的本地目錄上看不到新建的分支文件名,要使你的文件更新作用到你的分支上,你必須選擇文件,點擊鼠標(biāo)右鍵,選擇[切換...],選擇你重命名的文件,點擊確定即可。這樣你的本地文件就和分支文件關(guān)聯(lián)上了,不要奇怪,這時本地目錄上看到的文件名仍然為舊的文件名。
    經(jīng)驗小結(jié):
    1、如果操作的文件之前還未提交,而你又想把文件提交到新的分支上,記得一定要選擇切換
    2、SVN分支的管理實際上就是把不同的分支用不同的文件保存,因此你在取得新版本的時候會發(fā)現(xiàn),不同分支的最新文件也會被獲取下來。
    創(chuàng)建tag操作,相當(dāng)于把當(dāng)前的代碼版本復(fù)制一份到其他地方,然后以這個地方為出發(fā)點進(jìn)行新的開發(fā),與原來位置的版本互不干擾。
    對于branches、tags、trunk這三個目錄,并不是subversion必需的,而是被總結(jié)的一種良好的團(tuán)隊開發(fā)習(xí)慣,其使用方法為:
    1、開發(fā)者提交所有的新特性到主干。 每日的修改提交到/trunk:新特性,bug修正和其他。
    2、這個主干被拷貝到“發(fā)布”分支。 當(dāng)小組認(rèn)為軟件已經(jīng)做好發(fā)布的準(zhǔn)備(如,版本1.0)然后/trunk會被拷貝到/branches/1.0。
    3、項目組繼續(xù)并行工作,一個小組開始對分支進(jìn)行嚴(yán)酷的測試,同時另一個小組在/trunk繼續(xù)新的工作(如,準(zhǔn)備2.0),如果一個bug在任何一個位置被發(fā)現(xiàn),錯誤修正需要來回運(yùn)送。然而這個過程有時候也會結(jié)束,例如分支已經(jīng)為發(fā)布前的最終測試“停滯”了。
    4、分支已經(jīng)作了標(biāo)簽并且發(fā)布,當(dāng)測試結(jié)束,/branches/1.0作為引用快照已經(jīng)拷貝到/tags/1.0.0,這個標(biāo)簽被打包發(fā)布給客戶。
    5、分支多次維護(hù)。當(dāng)繼續(xù)在/trunk上為版本2.0工作,bug修正繼續(xù)從/trunk運(yùn)送到/branches/1.0,如果積累了足夠的bug修正,管理部門決定發(fā)布1.0.1版本:拷貝/branches/1.0到/tags/1.0.1,標(biāo)簽被打包發(fā)布。
    一般建立最初的repository時,就建好這三個目錄,把所有代碼放入/trunk中,如:要將project1目錄下的代碼導(dǎo)入repository,project1的結(jié)構(gòu)就是:project1/branches,project1/tags,project1/trunk,project1/trunk/food.c,project1/trunk/egg.pc……,然后將project1目錄導(dǎo)入repository,建立最初的資料庫。然后export回project1,作為本地工作目錄。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內(nèi)容

  • 命令的使用 1、檢出 svn cohttp://路徑(目錄或文件的全路徑)[本地目錄全路徑] --username...
    小李龍彪閱讀 4,457評論 0 9
  • iOS 開發(fā) SVN 版本控制器 更多技術(shù)交流請加群 iOS技術(shù)聯(lián)盟 27512466 SVN是Subversio...
    Sunny_Fight閱讀 8,820評論 7 63
  • 3個問題 安裝優(yōu)化軟件環(huán)境nginx,lvs <== 運(yùn)維工程師 程序代碼(不斷更新)<==開發(fā)工程師,開發(fā)+運(yùn)維...
    木心若素閱讀 8,007評論 1 7
  • 原文地址:http://blog.csdn.net/kerry_deng/article/details/4628...
    武林盟主和穿山甲閱讀 461評論 0 1
  • 作為一個習(xí)慣命令行的人,很難去接受一個可視化客戶端,如SourceTree、Cornerstone等,雖然看...
    劍未佩妥閱讀 601評論 0 1