【发布时间】:2017-04-20 09:13:07
【问题描述】:
在 Perforce 中,我们做了很多分支和合并。我们如何才能找到引入了一项更改的原始更改列表?
例如,我在自己的私有分支中提交了一个 id 为 53343 的变更列表,两天后,它被合并到公司分支 A,一周后,它被合并到集成分支 B,最后,它被合并到主分支。 现在 changelist id 是一个完全不同的 ID,比如说 55445,因为它是一个合并,实际上包含了很多 changelist,除了我的,可能有 300 个。
我现在如何才能获得原始的“53343”?
以下是更详细的描述。
例如,我想知道仓库范围内一个文件的更改历史记录。
$ p4 changes //prod/main/platform/abc.txt
Change 560938 on 2017/04/13 by user1@user1:main 'bug fix2'
Change 559384 on 2017/03/24 by user1@user1:main 'bug fix1'
Change 559178 on 2017/03/22 by branchowner@branchowner:ws 'Merge Integration@558992 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 user2@user2: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 并不是这里原创的。 我在我的 dev 分支中创建了这个 abc.txt,但是分支管理员从我那里复制了它并在他的分支中做了一个“p4 add”。所以,现在对于主分支,它只能看到文件 abc.txt 是原始来自 coorA 分支。 我们失去了这个文件真正的第一个所有者,我们只能追踪到分支管理员。
我们现在想要的是得到原始所有者,但是在coorA分支中添加时我们失去了关系,是否有更深的追溯,例如通过文件md5sum?
【问题讨论】:
-
如果“branch keeper”手动复制了文件而不告诉 Perforce 文件已被复制(即,不使用
p4 copy或p4 integrate),你可以' t 合理地期望 Perforce 能够通过魔法找出这些文件的来源。