2012-07-11 105 views
6

SVN「沒有目標兩個頂級報道」我有一個SVN回購最佳解決途徑

http://path/to/svn/trunk 

而且已經支這幾件事情要

http://path/to/svn/branch 

通過使用

svn copy http://path/to/svn/trunk/site1 http://path/to/svn/branch/site1 -m 'message' 

我已經做了很多工作,在樹枝上,但還沒有合併它放回,因爲它是沒有準備好。

不過,我需要提交修改現在樹幹,我得到試圖這樣做

> svn commit -m 'some message' 
svn: Commit failed (details follow): 
svn: Aborting commit: '/path/to/svn/trunk' remains in tree-conflict 

我想我應該svn up的/路徑/到/軀幹,但以下時以下發生

> svn up 
svn: Two top-level reports with no target 

一個--force不利於亡羊補牢。

svn status導致大量+的旁邊的修改過的文件

> svn status 
M + site1/changedfile 

有沒有人經歷過這一點,你可以擺脫手頭上的問題,一些輕?

回答

2

我設法解決這個問題的方法是將/path/to/svn/trunk中受影響的目錄移動到臨時位置,並在主幹上執行svn up

這拉舊版本中我的文件。然後,我手動複製了無法提交的文件,並且一旦它們恢復正常,一切按預期工作。

0

做一個谷歌搜索,答案(例如this SO thread)表明你做了一些令svn感到不安的改變(例如,對文件進行了修改,然後在沒有提交的情況下移動它)。

到目前爲止,我能找到的最好的修復方法是對trunk進行全新的檢查,手動合併對它的更改(例如通過WinMerge,如果您在Windows上) - 在不同類型的更改之間進行提交到同一個文件/目錄 - 從你當前的工作拷貝;然後提交結帳。 (此時,您可以使用此修改後的全新結帳替換當前的工作副本,也可以放棄工作副本中的所有更改並對其進行更新,使其與您剛剛提交的更改保持同步)

+1

感謝您的回覆,但我正在尋找一種方法來解決這個問題,而無需重新結帳。 – 2012-07-19 08:32:06

+0

@ darryn.ten - 出於好奇:新鮮複製方法有什麼問題? – Attila 2012-07-19 13:53:38

+1

缺少磁盤空間,主幹的大小和svn的速度(哈哈)。 – 2012-07-19 14:06:15

0

'S'表示切換的URL狀態 - 目錄的URL不對應於您當前的工作目錄。這可能是由於合併或交換機未完成其操作。在這種情況下,我通常會執行以下操作:

對於以下步驟,讓目錄'problem_dir'爲受影響的目錄。

首先我找出目錄皆已過

svn info problem_dir 

如果它指向另一個URL,然後切換到你希望它指向的網址:

svn switch ^/trunk/problem_dir problem_dir 

一旦所有目錄指向正確的URL,您可以恢復和更新:

svn revert . -R 
svn update 

導入螞蟻!只有在您進行修改後才能進行遞歸還原。

如果這不起作用,那麼最後的手段將

rm -rf . 
svn update 
1

後,以下爲我工作的一個拙劣的svn mv https://path1 https://path2

svn revert --depth infinity path2 
svn update path2 

這避免我不必做新鮮結帳別人建議。在這個過程中,我的變化都沒有丟失。