[英]How to 'fix' a SVN branch/tree conflict?
我接管了一個軟件項目並決定使用Tortoise SVN將所有內容放在SVN(在Assembla上 )下。 行李箱在ROOT下。 因此主干包含整個應用程序(我標記為1.0)。 對於我的第一個重要功能,我創建了一個名為“dev”的功能分支。
我可以將trunk分支中的更改合並到dev分支中而不會出現問題(因為我正在修復小錯誤)。 一旦我的功能完成,我就會合並回主干分支。 到目前為止,一切都在發揮作用。 ROOT下的新代碼正確顯示了新功能。 但后來我做了一個提交(合並的結果),現在每次我嘗試從root或dev分支進行合並時,SVN都抱怨許多文件的“樹沖突”。 甚至是自合並以來我沒有觸及過的文件。 我試圖解決沖突,沒有成功。
我是唯一的開發人員,因此我並不真正關心對存儲庫的重大更改。 但是,如果可能的話,我仍然希望保留所有文件的歷史記錄。
解決此問題的最佳方法是什么? 有沒有辦法可以將ROOT主干中的所有最新文件標記為文件的“明確”版本?
[編輯]更多信息
[編輯] 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 cp
或svn mv
用於除分支和合並之外的任何目的 - 如果這樣做,您將需要刪除它們創建的虛假svn:merge
屬性(如果需要,則在分支和主干上)在運行重新整合之前,它將失敗,將發生樹沖突消息。
總的來說,與分布式VCS系列(git,hg,bzr,darcs等)相比,svn的分支和合並仍然相當薄弱,但是如果你遵循這些指導原則就可以完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.