您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎樣進行svn的使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
svn是每天都要用到的工具,學會更好的使用它,對提高工作效率很有幫助,小編記錄svn日常使用的一些技巧,方便溫故知新!
屬性的作用?
為每個文件或文件夾附加額外的信息,例如:
"test-results=all passing " test-results(屬性名) all passing(屬性值)
注:屬性名可以任意取,但最好不要以svn:開頭,以免與系統保留屬性名沖突。
當開發分支中存在svn copy或svn move的修改時,合并回主線需要特別小心!!!
例:
試想當你在自己的開發分支上通過svn move將文件integer.c重命名為whole.c,事實你是在開發分支上創建一個新文件,并刪除了舊文件。同時在主線上,你的同事A提較了一些對integer.c的修改。這時你準備將你開發分支上的修改合并回主線:
$ 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
所得到的結果并非是你和你的同事A想要的,svn刪掉了包含你同事A最近一次修改的integer.c,并新增了一個文件whole.c,但whole.c中并不包含同事A的最新修改,他的修改被移除了。(這個缺陷存在于當前版本的svn中,期待后續版本能有改進)
svn switch
svn switch是svn update的一個超集,所以它們具有一些共同的特性:當運行這兩條命令時,任何本地工作拷貝的修改都會被保留。
試想,當你在主線的工作拷貝上做了大量的修改,突然你意識到最好為了這次修改創建一個獨立的修改分支,借助上述特性,你可以簡單地通過兩步完成該操作:
$ 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.
假設你修改完畢后準備svn commit,那么所有的修改都將被移送到修改分支而非主線。
通過svn copy從歷史版本庫中恢復被刪除的文件
$ svn copy ^/calc/trunk/real.c@807 ./real.c $ svn status A + real.c
通過svn diff查看詳細的歷史修改記錄(精確到行)
檢查本地工作拷貝的修改
svn diff file
檢查本地工作拷貝與指定版本的修改
svn diff -r revision file
檢查指定的兩個版本間的修改
svn diff -r revision1:revision2 file(可以不再工作拷貝中執行該命令,但需要指定URL)
檢查前后兩個版本間的修改
svn diff -c revision_new file
處理樹沖突
原因:當你的同伴移動或刪除了一個你還在修改的文件,在你svn up時就會產生樹沖突
解決樹沖突的步驟:
①. 通過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指示版本庫上與本地工作拷貝沖突時的版本信息
②.根據第①的得到信息,決定解決樹沖突的方案
可以刪除本地工作拷貝的文件,也可以刪除版本庫中的文件,視具體情況而定。
若要刪除本地文件但需要保留其中的修改,可以使用svn diff產生標準補丁文件patch,再通過svn patch打補丁
$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打補丁
當實際修改的行號和補丁文件中的行號存在偏差時或補丁文件中某幾行在實際應用修改時被忽略時,會在輸出報告中用符號'>'表示,這時我們就需要仔細審查修改是否正確了
當補丁文件中修改行在實際修改中找不到對應行時,這部分修改會被保存到一個以.svnpatch.rej為后綴的文件中。需要我們手動合入修改
上述就是小編為大家分享的怎樣進行svn的使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。