版本控制SVN,Local delete, incoming delete upon update

svn local delete, incoming delete upon update 解決辦法

 

一、

  1. svn local delete, incoming delete upon update 解決辦法
  2. # 1.In your working directory, recreate that conflicting file:
  3. $ touch foo
  4. # 2.Revert that file to the state SVN likes (that means deleted):
  5. $ svn revert foo
  6. # 3.Now delete that file:
  7. $ rm foo
  8. # 4.Conflict resolved:
  9. $ svn st
  10. # Done.

最後還需要指定更新文件:svn up application.js


二、

刪除文件夾後點commit提交,但是報錯,報錯內容如下:

提示 "svn: Commit failed (details follow): svn: '/***/xxx.c' is scheduled for addition, but is missing "

原因:之前用SVN提交過的文件,被標記爲"add"狀態,等待被加入到倉庫。若此時你把這個文件刪除了,SVN提交的時候還是會嘗試提交這個文件,雖然它的狀態已經是 "missing"了。


解決:在命令行下用 "svn revert xxx.c --depth infinity",在圖形界面下,右鍵--Revert,選中那個文件。這樣就告訴SVN把這個文件退回到之前的狀態 "unversioned",也就是不對這個文件做任何修改


三、

錯誤提示:

svn: '/Users/qrh/Desktop/work/svn/yb2.0/TVAPP/Images/share/[email protected]' is scheduled for addition, but is missing

 

錯誤原因:

產生問題的原因是有一個文件已經加入到版本庫中,但是後來在文件系統中又移除了這個文件,所以不能夠提交。

 

解決方法:

svn revert /Users/qrh/Desktop/work/svn/yb2.0/TVAPP/Images/share/[email protected] 

svn ci -m "update"


四、

    經常有人會說,樹衝突是很難解決的一類衝突,其實一旦瞭解了其原理,要解決也不難。先回顧下對於樹衝突的定義。

    樹衝突:當一名開發人員移動、重命名、刪除一個文件或文件夾,而另一名開發人員也對它們進行了移動、重命名、刪除或者僅僅是修改時就會發生樹衝突。

出現衝突時,一般會提示衝突的信息是什麼。過後我們可以使用svn st來查看當前狀態。svn st的各種狀態代表什麼,請參考此博文svn st狀態詳解

先介紹一下概念

Delete : 其中目錄結構變化,都認爲是Delete

Edit: 是指修改文件

Local : 是你本地修改

Incoming :是別人修改,你要Update或Merge進來。

這樣應該有4個組合,但是Edit對Edit的組合應該是File Conflict,這個容易解決,不在Tree Conflict 討論範圍,所以有3種組合。再需要區別Update和Merge,就有了6種情況。分別是

Local delete, incoming edit upon update

Local edit, incoming delete upon update

Local delete, incoming delete upon update

Local missing, incoming edit upon merge

Local edit, incoming delete upon merge

Local delete, incoming delete upon merge

分別對這幾種情形解釋如下:

1.Local delete, incoming edit upon update(本地刪除,更新後傳入修改)

產生原因:1.A修改文件Foo.c後提交到版本庫中,B將Foo.c重命名爲Bar.c或者刪除了Foo.c或者直接將Foo.c的父目錄Foo直接刪除 2.B更新工作副本會提示該衝突,在working copy顯示爲Foo.c在本地刪除,被標記爲衝突。如果是重命名,則Bar.c被標記爲新增,但是不包括A的修改。

解決:A與B要確認是否採用A的修改與是否重命名。如果採用A的修改,並且要重命名則修改後,標記衝突解決,svn resolved,最後提交;如果不採用A的修改,直接標記衝突解決提交即可。

2.Local edit, incoming delete upon update (本地編輯,更新後傳入刪除)

產生原因:1.A對Foo.c重命名爲Bar.c並提交到版本庫(或者A將Foo.c的上級目錄Foo修改爲Bar),B在他的工作副本中對Foo.c進行修改。2.B提交前更新,會提示如此錯誤。

解決:同樣需要兩個人進行協商後修改。

3.Local delete, incoming delete upon update (本地刪除,更新後傳入刪除)

產生原因:1.A將Foo.c重命名爲Bar.c後提交,B對Foo.c重命名爲Bix.c。2.B更新本地工作副本是會提示該樹衝突。

解決:通過日誌查找文件被刪除即重命名的原因,A與B協商後最終確認採用哪個名稱。

4.Local missing, incoming edit upon merge (本地丟失,合併後傳入修改)

產生原因:1.A在主幹上修改Foo.c,B在分支上將Foo.c重命名爲Bar.c。2.B合併A在主幹上的修改。

解決:B先標記衝突解決,然後將Foo.c拷貝至本地,將A的修改合併至自己的文件中或者直接放棄A的修改,採用自己的修改。

5.Local edit, incoming delete upon merge (本地修改,合併後傳入刪除)

產生原因:1.A將Foo.c重命名爲Bar.c(或者將Foo.c的父目錄Foo改爲Bar),B在分支上修改Foo.c。2.B合併A的修改時提示該衝突。Bar.c被標記爲增加,Foo.c被標記爲衝突。

解決:同樣根據日誌查找到修改的源頭,兩人協商後解決。

6.Local delete, incoming delete upon merge (本地刪除,合併後傳入刪除)

產生原因:1.A在主幹上將Foo.c重命名爲Bar.c,B在分支上將Foo.c重命名爲Bix.c。2.B合併A的修改時會提示衝突。重命名後的文件被標記爲新增,原來文件被標記爲樹衝突。

解決:通過日誌查找到文件被改名的時刻,兩人協商後解決。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章