2017-04-20 104 views
3

在Perforce中,我們進行了大量分支和合並。我們如何才能找出引入一個變更的原始更改列表?如何找出一個更改列表的原始位置來自於Perforce

例如,我在自己的私人分支中提交了一個ID爲53343的更改列表,兩天後它被合併到公司分支A中,然後一週後,它被合併到分支B中,最後,它被合併到主分支。 現在更改列表ID是完全不同的,比如說55445,因爲它是一個合併,實際上包含了很多變更列表,可能是300以外的變更列表。

現在怎樣才能得到原來的「53343」?

以下是更詳細的說明。

例如,我想知道庫位範圍內一個文件的更改歷史記錄。

$ p4 changes //prod/main/platform/abc.txt 
Change 560938 on 2017/04/13 by [email protected]:main 'bug fix2' 
Change 559384 on 2017/03/24 by [email protected]:main 'bug fix1' 
Change 559178 on 2017/03/22 by [email protected]:ws 'Merge [email protected] to main ' 

我們可以在主分支中看到它來自合併。 而使用註釋

$ p4 annotate -I //prod/main/platform/abc.txt 
. 
. 
. 
554294: Monday morning 
554294: I love foot ball 
554294: XNES rocks 
. 
. 
. 

我們可以告訴的變化首先來自554294

$ p4 describe 554294|more 
Change 554294 by [email protected]:coorA on 2017/01/17 19:24:51 
Integrate all dev changes to coorA 

Affected files ... 

. 
. 
. 
... //prod/coorA/platform/abc.txt#1 add 
. 

554294是一個合併,並在本次合併,添加將文件abc.txt。但實際上這個abc.txt並不是在這裏創建的。 我在我的開發分支中創建了這個abc.txt,但分支門將從我的分支中複製它,並在他的分支中執行了「p4添加」。所以,現在對於主分支,它只能看到文件abc.txt是原來來自coorA分支的。 我們失去了這個文件的真正的第一個所有者,我們只能追溯到分支門將。

我們現在想要的是獲得原始的所有者,但是當我們將它添加到coorA分支時,我們失去了它們之間的關係,無論如何要追溯到更深的地方,例如,通過文件md5sum?

+0

如果「分支管理員」手動*複製文件而不告訴Perforce文件被複制(即,不使用p4 copy或p4 integration),您無法合理地期望Perforce能夠通過魔法找出那些文件來自哪裏。 – jamesdlin

回答

1

我假設您正在查看特定文件中的更改。在P4V中找到該文件,右鍵單擊,然後選擇修訂圖表。這會告訴你如何傳播變化的圖表。圖中的每個節點都是該文件的一個版本。合併顯示爲箭頭(邊緣),因此向上錯誤將使您從55445到53343.

此外,要快速查看文件的各個版本之間的更改,可以拖放一個圖形的節點到另一個和P4V將顯示您的差異。

+0

謝謝,是的,這在大多數情況下都有幫助。我的情況有點不同..可能是Perforce的錯誤使用。往上看。 – Evilight

1

正如你所說,更改55445可能會包含很多不同分支的更改。您可以通過運行瀏覽所有的人:

p4 changes -i @55445,55445 

但是,當你說你正在試圖獲得一個更具體的「改變」的來源我想你問的是改變55445中的特定差異,也就是說,您正在嘗試查找特定文件中的特定行。爲此,運行:

p4 annotate -I //depot/file 

p4 annotate命令顯示的每一行該文件內起源於修改/改變; -I標誌會跟蹤合併關係以找到跨越不同分支的每一行的真正原點。

來源:幾年前我寫過的博客文章。 :) https://www.perforce.com/blog/101213/p4-annotate-i-going-deeper

+0

謝謝你的幫助。我的情況有點不同,可能是因爲使用Perforce時出現了錯誤。 我的情況是,我的更改列表添加了幾個文件,並且從我的私人分支 - >公司分支A,分支所有者在從我的私人分支複製的公司分支A中使用「p4添加」這些文件,因此即使是從「p4註釋」 ,原來的提交是在公司分支A ..... – Evilight

+0

這對我來說並不是很清楚 - 如果這些是在分支A中添加的全新文件,那麼它們與所做的更改有什麼關係你的分支? –

+0

不能把所有的評論,我將不得不編輯問題,以顯示我的問題 – Evilight

相關問題