2012-08-02 109 views
4

我們有一些公司中間件,有時很難找到正確的版本我正在尋找,所以我經常需要更新到不同的版本來測試它們。SVN結帳無需恢復

我通常結賬:

svn co svn+ssh://(username)@(ip)/srv/svn/intranet/trunk/PYTHON/<application> <local-application> 

然後我可以更新到不同版本

svn update (path) -r (rev) 

大部分的時間嘗試幾次後,這將導致錯誤節點保持在衝突

如果我刪除該文件夾,並嘗試做一個新的結帳它只是恢復我有。我想要做的就是結賬修改,我沒有做任何修改,但仍認爲存在衝突。

香港專業教育學院試圖解決這些問題,但似乎沒有任何工作:

SVN更新-r 1586

Skipped 'inm/inm' -- Node remains in conflict 
D inm/fabfile.py 
D inm/test.db.bak 
D inm/tests 
D inm/test.db 
D inm/doc 
D inm/test.ini 
D inm/test.sql 
U inm/setup.py 
A inm/inm.egg-info 
A inm/inm.egg-info/SOURCES.txt 
A inm/inm.egg-info/top_level.txt 
A inm/inm.egg-info/PKG-INFO 
A inm/inm.egg-info/entry_points.txt 
A inm/inm.egg-info/dependency_links.txt 
A inm/inm.egg-info/not-zip-safe 
A inm/inm.egg-info/paster_plugins.txt 
A inm/inm.egg-info/requires.txt 
U inm/setup.cfg 
Updated to revision 1586. 
Killed by signal 15. 
Summary of conflicts: 
    Skipped paths: 1 

svn resolved inm/inm 
Resolved conflicted state of 'inm/inm' 
(venv) 

svn update inm/inm -r 1586 
Updating 'inm/inm': 
Password: 
Skipped 'inm/inm/templates' -- Node remains in conflict 
At revision 1586. 
Killed by signal 15. 
Summary of conflicts: 
    Skipped paths: 1 
+0

可能未跟蹤的文件導致衝突;目前還不清楚,在每次操作之前和之後,該目錄的狀態/內容(「路徑」,是否與「intranet/trunk/PYTHON/」相同?你的SVN版本是什麼? – 2012-08-02 09:59:29

+0

如果您認爲這絕對是一個錯誤,如果您沒有更新工作副本中的任何內容,通常可以在FreeNode – 2012-08-02 10:00:26

+0

上寫信給[email protected]或#svn頻道,通常情況下它的行爲不會如此。只是爲了確保,你是否將整個工作副本更新爲不同的版本,或者只是其中的一部分?如果是前一種情況,那麼在我看來,這是svn中的一個錯誤。 – 2012-08-02 10:02:36

回答

16

我覺得我是在這裏尋找答案是

svn revert --depth=infinity inm 

我不關心保持本地修改,只更新到新版本。現在我幾次都使用了該命令,它似乎這樣的伎倆

編輯

在觀看我的錯誤,我再次可以看到,很可能被測試改變或建立了很多的文件。我應該將它們添加到忽略文件中,以便它們的更改不會被svn檢測到。

+0

做到這一點,然後更新,很好地工作 – 2014-11-05 09:41:30

1

所以:

  • 你只檢查出來,並從trunk更新,或者你是否有時也從分支中退出?
  • 你在測試時運行任何程序嗎?
  • 如果您在運行更新之前執行了svn status,該怎麼辦?你有結帳的原始副本嗎?

衝突可能會發生,原因很多。

想象一下,您已經修改了Subversion存儲庫中的文件,然後對較早版本或更高版本進行了更新。根據你的操作方式,Subversion可能會嘗試合併你所做的和你正在檢查的內容之間的變化。有時,如果你沒有從版本的頭部更新,Subversion不會。在這種情況下,Subversion會報告文件存在衝突。

另一個原因是你在你的工作目錄下創建了一個不在你的Subversion版本中的文件。當您使用該文件更新Subversion版本時,Subversion將報告衝突。

然後,也許你的系統出了問題。我們現在根本沒有足夠的信息。

下次您執行此操作時,請在您的工作目錄上執行svn status,然後再執行svn update。事實上,這總是一個好主意。這會在您進行更新時警告您與Subversion可能發生衝突。

我在Subversion中錯過CVS的一件事(我不想錯過CVS)是一個僞裝執行命令的選項。這可以讓你假裝做一個更新,並在進行實際更新之前警告你有衝突。唉,Subversion目前沒有這樣的選擇(雖然它已經被嚴格要求)。