標籤:
SVN一般都是團隊合作做一個項目所需用到的,為了是版本的統一, 我現在用的版本是 AnkhSvn-2.1.7141.181.msi
SVN取出[SVN checkout]:從檔案庫中取出工作複本。
匯出[Export]:從檔案庫中匯出乾淨的工作複本,不含svn管理用資料夾。
匯入[Import]:匯入目錄至檔案庫。
SVN Commit[SVN送交]:將你所做的修改送交至檔案庫。
SVN Update[SVN更新]:更新工作複本至目前檔案庫的最新版本。
Update to reversion[更新至版本]:更新工作複本至目前檔案庫的某個指定版本。
Get lock[取得鎖定]:鎖定某些檔案,只能由你修改。直到你解除鎖定。
Branches/Tags[分支/標記]:在檔案庫中快速建立複本以做為分支或標記之用。
Switch[切換]:切換工作複本至其它分支、標記。
Merge[合并]:將分支樹合并回主幹。
Blame[譴責]:列出檔案的每一行作者。
Create patch[建立補綴]:建立包含你所有修改的單一異動檔。
以下詳細介紹參考有書讀
1、 Check out——從伺服器端取得代碼
把伺服器資料庫裡存放的某個項目代碼取出來,放到本地主機中,這個動作叫做“check out”。使用具體步驟:進入要安裝專案檔的目錄中,點擊滑鼠右鍵,選擇SVN Check out項,然後填寫項目的原始路徑和安裝路徑後點擊“ok”即可。
2、Update——更新項目代碼
以 前checkout過的一個項目代碼,當伺服器上有了更新的代碼,或者本地代碼損壞或丟失,update可以自動判斷本地哪些檔案較舊,或者缺少,都會自 動更新。當然,你也可以刪除掉本地代碼,重新check out。使用具體步驟為:在要更新的項目上點擊滑鼠右鍵,選擇“SVN Update”項即可。
3、Commit——將本地代碼上傳到伺服器
當 修改(增加,刪除,修改等所有寫操作)過本地代碼後,這個動做會把新代碼提交到SVN。如果本地代碼做了修改,不執行commit操作,SVN伺服器上是 不會有這個新版本的,也就是說其它人也得不到。對代碼做過修改後,應儘快commit。使用具體步驟:在修改完待上傳的項目上點擊滑鼠右鍵,選擇 “SVN Commit”項即可。
4、Export——將項目匯出到本地
如果想要得到一個完整的項目,且不需要再進行版本的改動,可以直接把該項目匯出版本控制系統,成為一個普通檔案進行使用。具體步驟為:單擊滑鼠右鍵,選擇TortoiseSVN—— >>Export項,然後填入要匯出的項目既可。
5、Show Log——顯示所有版本
如果項目成員想查看本地下載的屬於版本控制內的某個項目以前的所有版本,就在該項目上單擊滑鼠右鍵,選擇TortoiseSVN菜單下的Show Log項。則該項目的所有版本及其每個版本的修改資訊都將顯示在出現的新對話方塊下,供項目成員進行參考。
6、Update To Revision——恢複到某個版本
當 項目成員想要把某個項目恢複到以前的某個版本時,在該項目上單擊滑鼠右鍵,選擇TortoiseSVN菜單下的Update To Revision,於是,在出現的Update對話方塊中可以先點擊“Show Log”來查看及確定要恢複到的版本號碼,或者直接將要恢複到的版本號碼填入“Revision”旁的編輯區內,最後點擊“OK”。於是,該項目就恢複到想要 的項目版本了。
7、Add——增加檔案
當項目成員想在項目中添加一個新檔案時,請把該檔案先拷貝到專案檔加下,然後,在該檔案上單擊滑鼠右鍵,選擇TortoiseSVN菜單下的Add項,於是,該檔案就可以被添加到項目中了。
進階特性
1、 Update to revision
Update預設更新到最新版本,update to revision則可以更新到指定版本(可以是更舊的版本)。
2、增刪專案檔及目錄的操作
增刪項目內檔案或目錄,請一定使用svn add ,或svn del 或svn rename,然後做commit操作.
本節和大家討論一下程式集版本最後一位使用SVN版本號碼的自動產生方法,這裡就向大家簡單介紹一下,歡迎大家能和我一起學習SVN版本號碼的相關知識。
使用SVN進行原始碼版本控制時,我們希望能夠快速找到每個發布版本對應的原始碼版本,現在可以通過在程式集的版本資訊中增加SVN源碼版本資訊的方式來實現我們的要求。
現在我們定義每個程式集的版本資訊的最末段表示SVN的源碼版本。詳細定義如下:
程式集版本號碼分為4段,例如1.0.4.23。
第一段為主要版本號,項目一但啟動則不會更改。
第二段為次版本號碼,在項目功能做較大調整時增加,增量為1。
第三段為修訂版本號碼,通常在解決缺陷或者細微功能變化時增加,增量為1或者2。該版本號碼分奇數和偶數兩種。奇數表示測試版本,偶數表示穩定版本。
第四段為SVN源碼版本號碼,該版本號碼通過指令碼自動產生。
使用指令碼自動產生SVN版本號碼的先決條件:
安裝TortoiseSVN;
原始碼在SVN版本管理控制之下。
修改項目設定,使之能夠自動產生SVN版本號碼:
修改Properties\AssemblyInfo.cs檔案,將程式集版本資訊的最末一段改為$WCREV$。並增加一行"//最後發布時間:$WCDATE$"
例如:
[assembly:AssemblyVersion("1.1.0.$WCREV$")]
[assembly:AssemblyFileVersion("1.1.0.$WCREV$")]
//最後發布時間:$WCDATE$
將AssemblyInfo.cs檔案重名為AssemblyInfo.tpl,並添加到原始程式碼控制。
從原始碼倉庫中刪除AssemblyInfo.cs,並排除它,使其不受版本管理。
添加本文中的GenerateAssemblyInfo.bat檔案到Properties目錄中,並添加到原始程式碼控制。
修改項目屬性,在建置事件的預建置事件命令列中添加以下命令。
"$(ProjectDir)\Properties\GenerateAssemblyInfo.bat""$(ProjectDir)".\Properties\AssemblyInfo.tpl.\Properties\AssemblyInfo.cs
注意:
在編譯之前記得提交你的更改和更新別人的更改,這樣才能確保版本號碼的正確。
今後要對程式集資訊進行修改時,請對AssemblyInfo.tpl檔案進行修改。
如果產生的AssemblyInfo.cs檔案出現中文亂碼,開啟AssemblyInfo.tpl,在檔案->進階儲存選項中將檔案編碼改為UTF-8即可。本節介紹SVN版本號碼問題完畢。
1. 產生一個名為autover的項目
注意項目的Properties檔案夾下有一個名為AssemblyInfo.cs的檔案,autover程式的版本號碼就寫在它裡面。
2. 建立模板檔案
在windows的資源管理員中進入Properties檔案夾,把AssemblyInfo.cs檔案複製一份,命名為AssemblyInfo.template.cs,並把它加入到項目中來。
3. 修改AssemblyInfo.template.cs的屬性
AssemblyInfo.template.cs檔案是用來自動產生版本號碼的模板檔案,它不應該被編譯,所以我們要把它的Build Action改成None,如所示:
4. 修改AssemblyInfo.template.cs的內容
在這個檔案中,你能找到如下兩行代碼:
[assembly: AssemblyVersion( "1.0.0.0" )]
[assembly: AssemblyFileVersion( "1.0.0.0" )]
其中的“1.0.0.0”就是程式的版本號碼,它使用的是“主要版本號.次版本號碼.組建號.修訂編號”的形式。前三個改成你自己需要的數字,最後一個改成“$WCREV$”,改完之後應該是類似下面的樣子:
[assembly: AssemblyVersion( "1.0.0.$WCREV$" )]
[assembly: AssemblyFileVersion( "1.0.0.$WCREV$" )]
在這個檔案的最後,你還應該加上下面兩段代碼,它們可以檢測出有本地修改(修改了但沒有提交)的代碼和有混合版本的代碼。
#if $WCMIXED?true:false$
#if DEBUG
#warning mixed update revisions founded
#else
#error mixed update revisions founded
#endif
#endif
#if $WCMODS?true:false$
#if DEBUG
#warning local modification founded
#else
#error local modification founded
#endif
#endif
5. 修改項目屬性
在項目屬性的Build Event頁的Pre-build event command line中輸入:
"%ProgramFiles%/TortoiseSVN/bin/SubWCRev.exe" $(SolutionDir) $(ProjectDir)Properties/AssemblyInfo.template.cs $(ProjectDir)Properties/AssemblyInfo.cs -f
注意,這裡我們必須保證TortoiseSVN安裝到了預設路徑上。在多人蔘加的項目中這應該是強制性的要求,否則,大家安裝的路徑都不一樣,甲機器上能用的配置,到了乙機器上可能就不行了。
然後,你可能還需要將Publish頁中的Automatically increment revision with each publish選項關掉(我不確定這步是否必須)。C#可以自己遞增版本號碼,但它產生的版本號碼和程式碼程式庫中的代碼沒有對應關係,我個人覺得意義不大。並且它 還可能會把我們的版本自增機制搞亂。所以應該關掉。
6. 把項目加入版本庫
使用VisualSVN的Add solution to Subversion命令把項目加入SVN,但不要提交。
7. 從SVN中排除AssemblyInfo.cs檔案
每次編譯時間,這個檔案都會基於AssemblyInfo.template.cs重建,所以沒必要加入版本庫。這步做完之後就可以提交整個項目了。
8. 編譯
編譯完成後,看一下產生的autover.exe檔案的版本資訊,本例中是1.0.0.1。隨便改點什麼,提交,重新編譯,你會發現它自動 變成了1.0.0.2,也就是程式的修訂編號總是與產生它的代碼的修訂編號一致。這樣,當程式出問題後,我們通過這個數字就能輕鬆得到產生它的那一版代碼了。
9. 其它問題
第8步中大家做完修改後再編譯時間可能會看到警告或錯誤資訊,說代碼有本地修改或混合版本。這就是第4步中,在 AssemblyInfo.template.cs檔案最後加的兩段代碼的作用,它們檢測代碼是否都已經提交了並且版本是否一致,一旦發現問題就會在調試 版中產生警告資訊,在發布版中建置錯誤資訊。使用這種方法,我們可以基本消除發布的程式的版本和代碼的版本出現不一致的可能性。去掉這兩個錯誤或警告的方 法也很簡單,把代碼整體提交或更新一下就行了。
工具——基於SVN的代碼中自動產生版本號碼