2010-03-23 82 views
2

我在Perforce中有一個很大的源文件,該文件已被拆分爲分支中的幾個較小的文件。我想創建一個可以處理這個問題的分支視圖,但perforce(2009.1)只能看到多個文件中的最後一個。例如,我創建:已拆分爲多個文件的文件的分支視圖

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 

後來我分裂大文件成更小:

p4 integrate //depot/new/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/new/huge_file.c //depot/new/small_file_three.c 

然後每個那些(包括//depot/new/huge_file.c)編輯和提交。

現在我修改//depot/original/huge_file.c,我想這些更改集成到//depot/new。如果我手動這樣做,它工作正常:

p4 integrate //depot/original/huge_file.c //depot/new/huge_file.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_one.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_two.c 
p4 integrate //depot/original/huge_file.c //depot/new/small_file_three.c 

但我不想這樣做每次我整合 - 這種事情屬於分支視圖。

不幸的是,如果分支視圖多次包含相同的源文件,則後續行將覆蓋較早的行。我怎樣才能創建一個分支觀點是這樣的:

//depot/original/huge_file.c //depot/new/huge_file.c 
//depot/original/huge_file.c //depot/new/small_file_one.c 
//depot/original/huge_file.c //depot/new/small_file_two.c 
//depot/original/huge_file.c //depot/new/small_file_three.c 

當我使用集成這個分支規範,我只得到small_file_three.c集成。

回答

3

我會建議你使用一個overlay mapping(一種手段,迫使待處理的規範的所有行),但網頁的快速細讀把對胡說:

覆蓋映射只能在 客戶端視圖上進行,並且不能與 分支視圖一起使用。

它看起來像你必須腳本它。 This page有一些可能對您有用的更多信息(並強調這一點無法完成,「Perforce不支持1:多文件映射」,)。

+0

另一個可能的解決方案是我用Perforce完成的,它有多個分支視圖來指定每個不同的新文件。這很笨拙,但是當我做了很多與此類似的分割時,結果工作得很好,因爲您可以在不同的源文件中重複使用相同的分支規格。 – 2010-03-30 16:34:34

0

只是爲了利益的問題,但爲什麼呢?

爲什麼不huge_file.c不Perforce公司,然後改變你的構建系統組裝出來的三個小,源控制,源文件。如果你想要真正的簡單,甚至只要#include它們。

換句話說,我想知道如果your're試圖使用你想要做任務了錯誤的工具?

+0

源文件huge_file.c已經在Perforce中,並且已經成爲幾個獨立事物的聚合體,這些獨立事物確實屬於不同的編譯單元。我將它分解爲一種清理源代碼的方式。現在每個源文件都更小,更易於管理。 – ScottJ 2010-03-25 17:23:02

+0

我還應該解釋一下// depot/original是該產品的舊版本,並且該分支上沒有新的開發,只有錯誤修復。新的開發是在// depot/new。因此需要在P4中整合兩者。 – ScottJ 2010-03-25 17:26:20