svn switch 的作用,不大好講清楚。用語言描述起來是:switch命令只是update命令的一個(gè)超集。svn switch和svn update兩個(gè)命令唯一區(qū)別就是update會(huì)一直比較同一路徑。換名話說,update通過時(shí)間移動(dòng)你的工作拷貝,switch通過時(shí)間和空間移動(dòng)工 作拷貝。
本文的例子僅限svn中的兩個(gè)txt文件switch,可能過于簡(jiǎn)單,但我相信以小見大,此時(shí)合用。
一、最簡(jiǎn)單的svn switch
右鍵 orange.txt 點(diǎn)擊,選擇“TotoriseSVN”->“Switch..”,將其 switch 到svn中的 apple.txt。
原始

orange.txt switch to apple.txt ->

可見,此時(shí)switch是將 apple.txt 的內(nèi)容更新到了 orange.txt。與 svn update 的作用沒有任何不同。
記得將orange.txt重新switch回來。
二、本地有修改,switch,提交,再switch回來
本地修改orange.txt

orange.txt switch to apple.txt, and merge, update ->

orange.txt switch back

update:

可見,僅僅是修改了switch后的apple.txt,switch回來后,orange.txt沒有變化,只是 apple.txt 變了。
總結(jié):
在沒有本地修改的情況下,svn switch 與 svn update完全等價(jià)。用途是:部分交換文件,可逆。例如,一個(gè)分支中的某個(gè)部分增加了新功能,但不想立即合并到trunk,可以在trunk中,將那一部分switch到該分支中。這個(gè)功能用的多一些吧。
如果有本地修改,則switch后提交,更新的是switch后的那個(gè)文件。switch回來后,本地修改丟失。用途是:
svn 中有兩個(gè)近似的文件(兩個(gè)branches中的同一個(gè)文件,名字一樣,路徑不同),你在本地修改時(shí),改錯(cuò)了地方,要提交到正確的目錄,就switch到正 確的目錄。這個(gè)是犯了錯(cuò)或思維跳轉(zhuǎn)才用,估計(jì)用的比較少。但也可能是這種情況,你本地修改了 trunk,但提交前覺得不放心,想創(chuàng)建一個(gè)新分支來提交這些修改,那就創(chuàng)建新分支,再switch到新分支,commit,最后 switch 回來吧,trunk什么都沒改,改動(dòng)全在 branches上了。
不知講清楚沒???