簡體   English   中英

如何“修復”SVN分支/樹沖突?

[英]How to 'fix' a SVN branch/tree conflict?

我接管了一個軟件項目並決定使用Tortoise SVN將所有內容放在SVN(在Assembla上 )下。 行李箱在ROOT下。 因此主干包含整個應用程序(我標記為1.0)。 對於我的第一個重要功能,我創建了一個名為“dev”的功能分支。

我可以將trunk分支中的更改合並到dev分支中而不會出現問題(因為我正在修復小錯誤)。 一旦我的功能完成,我就會合並回主干分支。 到目前為止,一切都在發揮作用。 ROOT下的新代碼正確顯示了新功能。 但后來我做了一個提交(合並的結果),現在每次我嘗試從root或dev分支進行合並時,SVN都抱怨許多文件的“樹沖突”。 甚至是自合並以來我沒有觸及過的文件。 我試圖解決沖突,沒有成功。

我是唯一的開發人員,因此我並不真正關心對存儲庫的重大更改。 但是,如果可能的話,我仍然希望保留所有文件的歷史記錄。

解決此問題的最佳方法是什么? 有沒有辦法可以將ROOT主干中的所有最新文件標記為文件的“明確”版本?


[編輯]更多信息

  1. 是的,'主'和'主干'是一回事。 我澄清了我的問題
  2. 當您從功能分支合並回來時,您是否首先從中繼進行另一次合並以獲取最新的中繼更改?“是的。主干是最新的。並且dev分支具有來自主干的所有更改。
  3. “一切都搞砸了”:我的意思是提交很好,但是當我開始從主干/主干合並時,SVN抱怨'樹沖突'。
  4. 我有超過200個樹沖突。 所以我正在尋找的是“接受所有”命令

[編輯] elhoim解決方案沒有解決我的問題。 但是,他對SVN版本問題是正確的。 目前(2009-10-28),Assembla正在使用SVN v1.5.1,而我的tortoiseSVN則是v1.6。 所以這就是我遇到這么多樹沖突的原因。 我嘗試使用elhoim的鏈接提供的解決方案並且它不起作用(我在嘗試HEAD-to-HEAD合並之前多次嘗試了一堆合並。有些文件因此而沒有轉移到根分支)。

看到HEAD-to-HEAD合並仍然無效,我決定簡單地刪除分支文件夾中的所有“.svn”文件,將文件復制到ROOT文件夾並進行提交。

這個答案應該有幫助。

否則,您使用的是陸龜SVN客戶端1.6.x嗎? 如果SVN服務器小於1.5.6,它似乎有問題 ...

似乎在嘗試合並回主干之前,在主干上的目錄結構級別進行的某些更改未被吸收到dev分支中。 在您的情況下,這可能會導致樹沖突。

我發現SVN本書的這一部分非常有用,它包含解決像你這樣的情況的方法。 希望這可以幫助。 http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html

[編輯]附加信息:


您是否已經在實際覆蓋/解決沖突版本的工作空間中運行了svn 在您有問題的工作區(實際執行合並的那個工作區)上可能仍有標記為“沖突”的文件/文件夾 - 所以一旦您查看了這些並手動解決了沖突,您就可以運行svn“已解決”。 我使用subversion命令行客戶端進行合並 - 但我已經驗證,此選項也可用於烏龜。 這應該打破沖突狀態,讓你繼續前進。 祝好運。

在一般情況下,SVN的合並支持只能處理使用特性分支一次 也就是說,你在它中工作並將更改從trunk合並到它中,然后使用svn merge --reintegrate在你完成時將它合並回trunk。

之后,如果您想繼續工作,則需要創建一個新的分支來處理。 如果你想保留相同的存儲庫路徑,我認為你可以刪除舊的並在其中創建一個新的而不會丟失數據,但是你可能想先嘗試使用測試存儲,以防svn:merge信息獲得扭曲。

這並不完美。 這個職位從電流合並語義引入了更詳細的信息。

另外,請注意svn cpsvn mv用於除分支和合並之外的任何目的 - 如果這樣做,您將需要刪除它們創建的虛假svn:merge屬性(如果需要,則在分支和主干上)在運行重新整合之前,它將失敗,將發生樹沖突消息。

總的來說,與分布式VCS系列(git,hg,bzr,darcs等)相比,svn的分支和合並仍然相當薄弱,但是如果你遵循這些指導原則就可以完成這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM