2014-01-08 43 views
0

我只需要應用從一個分支到另一個分支的一些變化。因爲它們沒有被很好的分離,所以我需要合併分支並手動還原那些不合適的分支。但是當我這樣做時,我需要而不是記錄mergeinfo,因爲當我只提交部分合並時,它們不再是true。如何恢復元數據更改並保留文本更改?在顛覆中做一個合併,但不要記錄mergeinfo

鑑於樹中有很多虛假mergeinfos(應該只有一個,在根目錄中,但由於各種怪癖,錯誤和錯誤還有更多)不僅在目錄上,而且在文件上也有文本更改,我不能簡單地在目錄上執行非遞歸還原。

我想我可以一直寫類似

svn propset svn:mergeinfo "$(svn propget svn:mergeinfo "$file") "$file" 

在包裹橫跨這將是比較複雜的狀態循環,所以我在尋找的東西簡單。


基本上情況是這樣的。我有分支generaltemporarytemporary上的一些更改應該在general之上,但與其他不應該混合的其他更改。所以我需要運行從temporarygeneral的合併,只選擇我想要和提交的更改。但由於temporary跟蹤general,我不能提交合並信息,因爲如果我這樣做了,則返回將是預期的更改並將合併到temporary

+0

爲什麼不在變化字段的每一步記錄你的意圖? – Casey

+0

@Casey:哪一步意圖在哪?當我做不完整的合併時,我正在詢問恢復mergeinfo。請注意,分支已經存在;我無法改變過去。 –

回答

1

在svn:mergeinfo屬性更改的目錄或目錄上運行svn revert。不要使用-R標誌,因此它不會遞歸併且不會刪除其他更改。

在你的情況下,你正在應用一堆部分更改。這意味着mergeinfo可能會以許多單個文件結束。一種解決方法是使用svn diff來選擇所需的更改,將其存儲在文件中,然後使用該文件運行svn patch。如果你不知道你想要哪些更改會產生一些負擔,並且如果你合併樹更改(不僅僅是文件或屬性更改),則差異和補丁不夠好。

如果您僅應用部分更改,爲什麼不讓Subversion爲您處理mergeinfo?您移除mergeinfo的目標似乎是讓修訂的其他部分在稍後正確合併。合併應該能夠處理,如果它不是一個錯誤,應該報告。

你可能只需要手動編輯這兩個選項。也許你應該提出你的情況,並要求恢復接受一個選項,只適用於[email protected]列表的屬性。

+0

不幸的是,也有一些文件合併信息。 (不是-1,因爲我忘了在問題中強調它,但不是+1,因爲在這種情況下它不起作用)。 –

+0

啊,是的。調整。 –

+0

如果我正在合併選定的修訂版,則將合併信息保留爲正確。但是,當合並修訂的部分內容時,mergeinfo會指示所有內容都已合併,然後部分合並逆轉併合並返回將應用該逆轉。如果我只想合併一些完整的文件(我沒有),我只能將mergeinfo放在這些文件上,但是我必須手動編寫mergeinfos,因爲subversion不會在目錄中應用這些文件時生成它們。只是不要存儲mergeinfo,然後做一個'--record-only'合併回來比較容易。 –