2010-01-14 58 views
11

所以我有一個問題在Subverion中引起了我很多悲傷。我在一個應該保持活動的分支中工作,直到我的功能集在開發完成之前重新整合。不幸的是,我已經完成的工作現在被業務部門視爲「關鍵任務」,他們希望我能夠從分支中挑選出這些功能,並將其推送到主幹中,以便QA能夠接受。SVN - 管理版本的部分合並

我遇到的問題是我開發了一個獨立的目錄中的功能,這是我在完全使用其他東西時創建的。所以爲了合併我的功能需要的剩餘代碼,我首先需要引入我以前做過的目錄創建。

這裏是我需要抽出修訂:

啓20
 一個./project_foo
 一個./project_foo/not_required_file.txt

啓24
 一個./ project_foo/required_file.txt

因此,要將此插入主幹,我必須執行以下操作:

SVN合併-r20:21 - >這讓我的目錄以及在not_required_file.txt
SVN復歸project_foo/not_required_file.txt - >擺脫了文件的,我不想
SVN合併-R 24 :25 - >這讓我需要的文件

哪些工作,並得到了東西到我想要的樹幹,但是當我開發完成並運行svn merge --reintegrate,我(顯然)沒有得到not_required_file.txt從版本20返回,因此遇到樹衝突(來自我後來做的進一步修改)。

所以我正在尋找一些關於在這些情況下做什麼的指導。

  • 有沒有一種方法只合並我想要從特定修訂中進行的特定更改?
  • 當我重新整合整個分支時,是否有辦法抓住我故意錯過的更改?
  • 我可以在trunk中創建需要的目錄結構,然後僅合併文件更改嗎?
  • 我可以創建另一個分支,在那裏移動所需的更改,重新合併該分支,然後從主幹上拉到我的原始分支?

謝謝。

回答

-1

不錯的問題。 :-)

看起來像你的分支有點搞砸了。你有好的想法如何解決它。如果它有效?試試看,有時你永遠不知道。

我認爲你不需要合併rev。在你的例子中24之前21。無論如何,缺失的目錄將被創建。

如果你不能幫助自己分支/合併,請嘗試手動移動文件(Tortoise幫助你)。

通常,避免部分合並修訂。更頻繁地提交,以便您可以採用更清潔的方式進行櫻桃採摘。

3

是否有隻有我從 特定修訂希望 具體修改合併的方式嗎?

如果您不想完整修訂,我會通過創建補丁文件並將其應用到其他分支並提交來手動複製您想要的內容。這樣一來,不是在顛覆的時候(當你重新整合分支的時候)跳過這個版本,它試圖合併它,你只是處理你手動複製的普通衝突,但它也會合併到你最初想要跳過的部分。

在文件創建/刪除/添加的情況下,它會在重新整合時創建它,並避免你的樹衝突,因爲你想要的'部分修訂'沒有正式合併過。

在沒有文件被創建/刪除/移動的情況下,您可以避免遺漏 的可能性,因爲您以前合併它時會排除部分修訂。

按照上述阻止你的下一個:

有沒有抓住 改變我故意錯過了,當我 重新整合整支的方法嗎?

如果您沒有合併部分修訂版本,則不會有任何故意排除的內容被Subversion記錄,並且您應該在已複製的部分處理普通衝突。

在你的情況下,你可能會告訴顛覆者再次合併那個單獨的修訂版,做與你以前所做的相反的事情(解決衝突或恢復你最初想要的部分,同時保留你最初遺漏的部分) ,但我不確定一旦合併記錄完成後它是如何工作的。

或者,如果您使用TortoiseSVN,您應該能夠選擇日誌中的修訂版本(在您的功能分支上),右鍵單擊您關心的修訂版本中修改的文件,然後單擊「顯示更改爲差異「,保存並將其手動應用回幹線(或無論哪個分支是我們的重新集成分支的目標)。

我能創建目錄結構 我需要在樹幹,然後合併 在只有文件的變化?

試一下,看看。在最壞的情況,你簽出其他工作區或手動修復文件的內容(因爲它跳過它時)

我可以創建另一個分支,移動那邊 所需的更改, 重返分支,然後將 從主幹拉到我原來的分支?

現在你只是讓我的頭受傷:)手動修復它聽起來像對我來說更少的工作。我會修復您在trunk上排除的部分,然後重試重新集成分支。

希望這有一部分是有幫助的。

1

只是「svn copy」丟失文件夾從分支到中繼遞歸。

-1

對於當前的問題,你可能會考慮SVK,具有比SVN更好的融合支持(或者是我使用SVN重足有做合併的最後時間):http://svk.bestpractical.com/view/HomePage

我注意到你雖然提到了不同技術水平的多個團隊的問題,但是,SVK並不是最好的解決方案。其實我比SVK更喜歡git-svn,因爲它提供了類似的好處(甚至比SVN或SVK更好的合併)。

根據你的技能水平的低端,SVK可能足夠接近SVN,它可以做到這一點,但它確實增加了一些額外的步驟來推動變化,我不知道有多好它在Windows(或,如果在Windows下受支持)支持,或者如果這是您的環境中的問題。

+0

欣賞答案,但基本上工具更改已經結束(最近才轉到SVN - 以前使用VSS),不幸的是,該店鋪僅限於Windows - 適用於所有應用。 – oldNoakes 2010-01-18 03:40:00