您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎樣進(jìn)行svn的使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
svn是每天都要用到的工具,學(xué)會更好的使用它,對提高工作效率很有幫助,小編記錄svn日常使用的一些技巧,方便溫故知新!
屬性的作用?
為每個文件或文件夾附加額外的信息,例如:
"test-results=all passing " test-results(屬性名) all passing(屬性值)
注:屬性名可以任意取,但最好不要以svn:開頭,以免與系統(tǒng)保留屬性名沖突。
當(dāng)開發(fā)分支中存在svn copy或svn move的修改時,合并回主線需要特別小心!??!
例:
試想當(dāng)你在自己的開發(fā)分支上通過svn move將文件integer.c重命名為whole.c,事實你是在開發(fā)分支上創(chuàng)建一個新文件,并刪除了舊文件。同時在主線上,你的同事A提較了一些對integer.c的修改。這時你準(zhǔn)備將你開發(fā)分支上的修改合并回主線:
$ svn merge --reintegrate ^/calc/branches/my-calc-branch --- Merging differences between repository URLs into '.': D integer.c A whole.c U . --- Recording mergeinfo for merge between repository URLs into '.': U
所得到的結(jié)果并非是你和你的同事A想要的,svn刪掉了包含你同事A最近一次修改的integer.c,并新增了一個文件whole.c,但whole.c中并不包含同事A的最新修改,他的修改被移除了。(這個缺陷存在于當(dāng)前版本的svn中,期待后續(xù)版本能有改進(jìn))
svn switch
svn switch是svn update的一個超集,所以它們具有一些共同的特性:當(dāng)運(yùn)行這兩條命令時,任何本地工作拷貝的修改都會被保留。
試想,當(dāng)你在主線的工作拷貝上做了大量的修改,突然你意識到最好為了這次修改創(chuàng)建一個獨(dú)立的修改分支,借助上述特性,你可以簡單地通過兩步完成該操作:
$ svn copy http://svn.example.com/repos/calc/trunk \ http://svn.example.com/repos/calc/branches/newbranch \ -m "Create branch 'newbranch'." Committed revision 353. $ svn switch ^/calc/branches/newbranch At revision 353.
假設(shè)你修改完畢后準(zhǔn)備svn commit,那么所有的修改都將被移送到修改分支而非主線。
通過svn copy從歷史版本庫中恢復(fù)被刪除的文件
$ svn copy ^/calc/trunk/real.c@807 ./real.c $ svn status A + real.c
通過svn diff查看詳細(xì)的歷史修改記錄(精確到行)
檢查本地工作拷貝的修改
svn diff file
檢查本地工作拷貝與指定版本的修改
svn diff -r revision file
檢查指定的兩個版本間的修改
svn diff -r revision1:revision2 file(可以不再工作拷貝中執(zhí)行該命令,但需要指定URL)
檢查前后兩個版本間的修改
svn diff -c revision_new file
處理樹沖突
原因:當(dāng)你的同伴移動或刪除了一個你還在修改的文件,在你svn up時就會產(chǎn)生樹沖突
解決樹沖突的步驟:
①. 通過svn info可查看包含沖突項的URLS
$ svn info code/bar.c Path: code/bar.c Name: bar.c URL: http://svn.example.com/svn/repo/trunk/code/bar.c … Tree conflict: local edit, incoming delete upon update Source left: (file) ^/trunk/code/bar.c@4 Source right: (none) ^/trunk/code/bar.c@5
左邊的URL指示本地工作拷貝的信息
右邊的URL指示版本庫上與本地工作拷貝沖突時的版本信息
②.根據(jù)第①的得到信息,決定解決樹沖突的方案
可以刪除本地工作拷貝的文件,也可以刪除版本庫中的文件,視具體情況而定。
若要刪除本地文件但需要保留其中的修改,可以使用svn diff產(chǎn)生標(biāo)準(zhǔn)補(bǔ)丁文件patch,再通過svn patch打補(bǔ)丁
$svn delete --force code/bar.c D code/bar.c $ svn resolve --accept=working code/bar.c Resolved conflicted state of 'code/bar.c'
通過svn patch打補(bǔ)丁
當(dāng)實際修改的行號和補(bǔ)丁文件中的行號存在偏差時或補(bǔ)丁文件中某幾行在實際應(yīng)用修改時被忽略時,會在輸出報告中用符號'>'表示,這時我們就需要仔細(xì)審查修改是否正確了
當(dāng)補(bǔ)丁文件中修改行在實際修改中找不到對應(yīng)行時,這部分修改會被保存到一個以.svnpatch.rej為后綴的文件中。需要我們手動合入修改
上述就是小編為大家分享的怎樣進(jìn)行svn的使用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。