SVN switch 用法详解 (ZZ)
SVN switch 用法詳解 (ZZ) ?http://www.cnblogs.com/dabaopku/archive/2011/05/21/2052820.html
?
確實,以前不會用switch之前,就像文中提到的那樣,先把trunk merge進branch,提交branch,再把branch merge進trunk,是很安全,很少會產生什么沖突,但是有點太麻煩了。switch的危險在于,如果switch之后常常忘記哪些文件是switch過的,需要查看文件的屬性或者看revision graph才能知道,比較麻煩,因此建議直接把自己工作的整個文件夾給swith過去。另外,按照我的理解,trunk和branch的關系就應該是主從關系,trunk是通過branch不斷地merge得到版本發展的;而branch應該是直接通過update就可以獲得trunk的更新,所以感覺用switch才夠正統。??
一直知道SVN有個switch命令,但是對它的介紹教程卻很少,大多是生硬的svn幫助文檔里的文字,從而一直不怎么會用。整理下來以備查閱。
使用SVN,自然是需要與別人合作開發才能體現出作用。兩個人如果都在trunk上工作,那么每次提交時都要保證代碼的正確性,否則自己提交一個bug百出的版本,對方一更新就掛了,所以提交時都要很謹慎。但我覺得應該有人會像我一樣有這樣的強迫癥,文件做點小修改就想提交到服務器上去,唯恐自己將來哪里修改失敗而萬劫不復。抑或為了備份考慮或者有事離開,也常常把寫的不完整的程序提交上去。因此,每個人建一個branch,在自己的branch上修改,再把修改merge進trunk里是個正確選擇。
之前不了解switch的用法,導致導致建的branch完全沒有個branch的樣子,基本和trunk平起平坐了。自己修改了內容,想要提交到trunk中,怎么做呢?恩,先把work copy提交到branch中;把trunk中現在的內容merge進work copy中(別人可能已經更新了trunk),然后再提交到branch中。然后把當前的work copy switch到 trunk(以前以為swith是這么用的!),把branch的內容merge到work copy中,然后把work copy提交到版本庫中。為了把branch提交到trunk中,居然需要三次提交,這完全是在操作兩個完全獨立的版本庫嘛,根本沒有什么邏輯上的聯系!
現在終于要進入主題,講講switch究竟是怎么用的了。
根據官方幫助文檔,switch的作用是?把工作拷貝更新到別的URL。下面的例子也講的不是很明白,導致我一直以為switch就是你可以在一個文件夾里管理兩個branch,來回切換就行了,不需要新建兩個文件夾,從而節省你的硬盤空間!現在通過我上面提到的那篇文章才明白,原來:一個work copy里的文件夾,可以來自不同的版本庫;文件夾里的每一個文件,可以受到不同版本庫的控制!
什么意思?ok,讓我們來親自實踐一下。
首先建立一個測試文件夾
把trunk checkout 到本地,不妨命名為me
然后再checkout出來一遍,命名為other
相當于我們有兩個本地副本在工作。
在me里,我們建兩個文件,a.txt(內容Hello world!),b.txt(內容Good morning!)把me提交上去。然后為a.txt建立一個branch,就放到branch下面稱為a.me.txt吧。
最終我們的版本庫是這個樣子:
回到本地,在me文件夾了,我們對a.txt進行switch,選擇branch里的那個文件,這樣,a.txt本身名字沒有變,只是指向了版本庫中branch的那個文件了。
ok,我們對它做點修改,
提交上去,我們更新一下other,看看a.txt,會發現內容卻是保持著最早的版本,剛才我們的提交卻是是修改了branch而沒有改變trunk。
我們以other的身份修改b.txt
提交然后更新me,就會發現b.txt確實受到了全局的改變。
好,下面我們就要把剛才對a.txt提交到全局了。這個其實就很簡單了,把a.txt switch回trunk,merge的時候選擇Reintegrate a branch,來源選擇branch里的那個文件就好了。最后不要忘了提交。
這時候更新一下other,就會發現 a.txt 的變化了
這差不多就把switch的用法徹底理明白了。switch是把工作空間里的一些文件、文件夾交給另一個版本庫來控制,讓你在一個版本庫中工作的時候隨時接受別人在另一個版本庫對其他文件的更新。因此,你就可以完全自在的編輯自己的branch,只要update就可以獲取trunk的更新(當然,trunk里別人對你switch走的文件的修改你是無法更新的,等你下次要merge是會產生conflict),因此brach和trunk的邏輯關系就是branch跟著trunk更新,trunk通過branch的merge而不斷完善。
當然了,如果你對一個文件夾里德很多文件進行switch,就會很難分辨出那些文件都是受哪個版本庫的控制(需要每個文件單獨查詢),因此一定要小心別產生混亂呦。
?
轉載于:https://www.cnblogs.com/InspiringMind/p/4661308.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的SVN switch 用法详解 (ZZ)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android简单的计算器
- 下一篇: 20150720 Two heads a