溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎樣進(jìn)行svn的使用

發(fā)布時間:2021-11-17 15:38:23 來源:億速云 閱讀:120 作者:柒染 欄目:軟件技術(shù)

這期內(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è)資訊頻道。

向AI問一下細(xì)節(jié)

免責(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)容。

svn
AI