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