【问题标题】:How to find out where one changelist is original come from in Perforce如何在 Perforce 中找出一个变更列表的原始来源
【发布时间】: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 copyp4 integrate),你可以' t 合理地期望 Perforce 能够通过魔法找出这些文件的来源。

标签: merge perforce revision


【解决方案1】:

我假设您正在查看特定文件中的更改。在 P4V 中找到该文件,右键单击并选择 Revision Graph。这将向您显示更改如何传播的图表。图中的每个节点都是文件的一个版本。合并显示为箭头(边缘),因此向上错误会将您从 55445 带到 53343。

此外,为了快速查看文件不同版本之间的变化,您可以将图表的一个节点拖放到另一个节点,P4V 会显示差异。

【讨论】:

  • 谢谢,是的,这在大多数情况下都有帮助。我的情况有点不同..可能是 Perforce 的错误使用。见上文。
【解决方案2】:

正如您所说,更改 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

【讨论】:

  • 感谢您的帮助。我的情况有点不同,可能是因为以错误的方式使用 Perforce。在我的情况下,我的更改列表正在添加几个文件,并且从我的私人分支 -> 公司分支 A,分支所有者使用从我的私人分支复制的公司分支 A 中的“p4 添加”这些文件,所以即使是从“p4 注释”,原始提交在公司分支机构 A.....
  • 这对我来说不是很清楚——如果这些是在分支 A 中添加的全新文件,它们与您分支中的更改有什么关系?
  • 无法将所有内容都放在评论中,我将不得不编辑问题以显示我的问题
  • 示例中的“分支管理员”应该学习如何分支文件,而不是手动复制+添加它们。 :\ 如果历史记录中没有文件相关的记录,则无法构建遵循关系的查询。
猜你喜欢
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多