第一次寫部落格,裡面難免有問題,歡迎指出~
以後不斷學習,還會完善與修改不妥之處~
一、svn的一些簡單的理解
原子提交:類似資料回滾方式,要麼成功提交要麼被中斷回滾,這樣我們可以避免只提交一部分檔案導致混亂。
實現原理:每次新建乙個可控制的工程前都要新建乙個庫,這個庫就是儲存你所有版本工程的倉庫,每次check out時都要從這個倉庫中取出你想要的版本工程,預設應該是最新的head版本。
二、svn建立及簡單操作
1.每個專案有乙個repository(庫存),首先要create repository。(預設有branches,tags,trunk等資料夾,可通過repo-brower檢視)
2.需要把你的工程import到庫(svn路徑)裡面。
3.checkout一下,會在指定的(在彈出的視窗自己填寫,它會自動記錄你之前的操作路徑)svn庫路徑以及指定的svn工程路徑下生成檔案。
4.增加新檔案後需要右鍵 tortoisesvn—add,之後再commit一下,這裡可以看見你的更改(新增)的檔案。
5.update可以更新到提交到庫中最新的工程檔案。
注意:如果你修改了某個檔案,沒有
commit
而是直接
update
的話,只會更新那些你沒有修改的檔案,你修改的檔案仍然以嘆號的形式出現,不會更新。
update與commit都可以點選showlog—雙擊修改檔案 檢視修改(右鍵版本comparewithprevious也可以),如上,可以看到版本改動的地方。
任意選擇兩個版本右鍵show difference as unifiled diff可以直接在同乙個檔案檢視修改的位置。
6.直接右鍵show-log可以檢視所有的版本以及改動,點選不同的版本後再雙擊檔案可以檢視不同版本改動的地方。
7.修改檔案後,如果發現錯了,可以再commit之前直接右鍵revert來取消修改。
三、tortoisesvn注意
1. 不要產生冗餘
2. 每次使用前先更新再修改
3. 每次提交前要盡量利用標籤功能
4. 如果乙個版本庫包含多個專案,人們通常按分支來安排布局:
/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
5. 提交對話方塊顏色資訊
紫色 新項已經增加到你的工作副本中。
深紅 你的工作副本中刪除了多餘項,或是你的工作副本中丟失的項被替換。
綠色 版本庫中的修改與你的本地修改成功合併。
亮紅 來自版本庫的修改在與本地修改合併時出現了衝突,需要你解決。
黑色 你wc中的沒有改動的項被來自版本庫中新版本所更新。
6. 有時候不小心刪除檔案,update後發現根資料夾還是紅色嘆號,這時候右鍵showlog可以檢視哪些修改,之後可以通過revert來撤銷操作。
7. 重名問題:如果一方提交的檔案盒你還未提交的檔案重名,當你update後彈出的提示框顯示正常,但是你的重名檔案還是你原來的不會被覆蓋,此時最好重新命名一下。
8. 衝突解決:我們看到如果不同的人修改了相同的檔案後commit會異常,更新也會異常,之後發現資料夾多了幾個檔案
filename.ext.mine,這是你的檔案,在你更新你的工作複本之前存在於你的的工作複本中,也就是說,沒有衝突標誌。這個檔案除了你的最新修改外沒有別的東西。
filename.ext.roldrev,這是你的檔案,在你更新你的工作複本之前存在於你的的工作複本中,也就是說,它是在你做最後修改之前所檢出的檔案。
filename.ext.rnewrev,這個檔案是當你更新你的工作複本時,你的subversion客戶端從伺服器接收到的。這個檔案對應與版本庫中的最新版本。
右鍵衝突檔案edit conflict
然後,執行命令tortoisesvn →已解決並提交人的修改到版本庫。需要注意的是已解決命令並不是真正的解決了衝突,它只是刪除了filename.ext.mine和filename.ext.r*兩個檔案,允許你提交修改。
如果你的二進位制檔案有衝突,subversion不會試圖合併檔案。本地檔案保持不變(完全是你最後修改時的樣子),但你會看到filename.ext.r*檔案。如果你要撤消你的修改,保留版本庫中的版本,請使用還原(revert)命令。如果你要保持你的版本覆蓋版本庫中的版本,使用已解決命令,然後提交你的版本。
你可以右擊父資料夾,選擇tortoisesvn → 已解決...,使用「已解決」命令來解決多個檔案。這個操作會出現乙個對話方塊,列出資料夾下所有有衝突的檔案,你可以選擇將哪些標記成已解決
之後會看見檔案自動新增了一些內容,顯示兩個衝突的版本
9. 忽略檔案和目錄
10. 也許由於伺服器問題,乙個subversion指令不能成功地完成,你的工作副本因此被滯留在乙個不一致的狀態。 那樣的話,你需要在該目錄上使用tortoisesvn → 清理命令。
11. 鎖定問題:
●檔案長期鎖定忘記解鎖
●不必要的順序開發
12. 開發常用兩種模式:
鎖定-修改-解鎖
拷貝-修改-合併
13. 模式對比及使用:拷貝-合併模型假定檔案是可以通過上下文合併的。通常情況下,文字檔案(例如源**以及用純文字,html,tex等格式儲存的文件)因為其內部結構直觀可知,容易理解上下文,所以用拷貝—合併方案較好。而二進位制檔案(例如用microsoft word格式,pdf等格式儲存的文件及,聲音,可執行檔案,庫等)內部結構複雜,且不容易理解更改處的上下文,採用鎖定-解鎖方案較好。
14. 最新的修訂版叫做head
這張圖就是列乙個漢語版的,方便理解一下意思
四、高階操作:分支
為什麼需要分支?
1你在開發乙個軟體,基於windows平台。有一天你要把這個軟體移植到linux/unix平台下,同時又不放棄原有版本,怎麼管理**?
2你的產品即將發布,需要進行一段時間的alpha,beta測試直至正式版release。同時,市場的競爭迫使你必須馬不停蹄的開發下乙個新版本,增加許多新的特性。兩個工作必須同時進行,怎麼管理**?
(盜個圖示意一下)
利用右鍵branch/tags,可以建立分支,這個分支的版本你可以控制,會直接存在你的乙個庫的資料夾內(並不包含在你的正常工程裡面,所以你更新並不影響這個分支)。
右鍵switch to branch可以從當前的主工程中切換到分支中去,在分支修改不會影響主工程。
svn使用小結
經過兩個多月的開發的摸索,對svn有了一套自己的使用經驗。一直習慣使用印象筆記幫助自己歸納知識要點,在這裡直接將關於svn使用的筆記內容貼出。由於平時只是為了自我提醒回顧用,可能內容不夠詳細。如果不理解某些概念,可以借助google了解。希望對有過svn的嘗試,處於初級使用階段的朋友有些幫助。另外,...
SVN 提交小結
在我們用vs進行專案合作開發的過程中,svn的提交控制是至關重要的,由於版本衝突造成的各種麻煩咱們已經遇到的夠多了。所以,總結他們的經驗教訓,給我們也給其他人做個提醒。下面的第一部分是需要在正式開發之前需要做的,第二部分是開發的過程中需要注意的。由於編譯性的檔案 包括obj資料夾和bin資料夾 並不...
SVN提交小結
目錄 一排除不必要的提交 1將編譯性的檔案排除在提交之外 11 obj資料夾 12 bin資料夾 2 將屬於每個使用者的檔案排除在提交之外 21 csprojuser 22 suo 3 排除方法 二提交的幾個原則 1先更新再生成解決方案最後提交 11 先update整個解決方案 12 然後保證在提交...