究竟是什么是`p4 -ztag sync ... @CLN`报告的变化?

时间:2016-10-08 01:34:12

标签: perforce

如果我运行p4 -ztag sync,第一张打印的记录如下:

... depotFile //depot/foo/bar
... clientFile /src/foo/bar
... rev 8
... action updated
... fileSize 2928
... totalFileSize 9087
... totalFileCount 1
... change 1234

所有后续记录如下:

... depotFile //depot/foo/baz
... clientFile /src/foo/baz
... rev 2
... action updated
... fileSize 2422

change字段仅列在第一条记录中,看起来它应该代表我同步的更改编号。如果我从之前的更改同步到稍后的更改,那么情况确实如此。

但是,如果我通过执行p4 sync ...@CLN向后同步到之前的更改,则报告的change有时不是CLN,而是稍早更改。 (是的,CLN 是一个有效的,已提交的更改,会影响...下的文件。如果我进一步同步,然后再使用转发相同的p4 sync ...@CLN命令,然后报告的change是我指定的更改号。)

为什么同一change命令的p4 sync ...@CLN报告值不同,显然取决于我是向前还是向后同步?这是一个Perforce错误吗? (我使用P4 / LINUX26X86_64 / 2015.1 / 1126382和P4D / LINUX26X86_64 / 2015.1 / 1240625。)

1 个答案:

答案 0 :(得分:2)

报告的更改是与正在同步的任何修订关联的最高更改列表。

在某些情况下,这可能与命令行中指定的更改列表(如果有)相同,但它通常会更低(尽管我认为没有任何方式可以更高)。< / p>

举个例子:

c:\test\changes>p4 files -a ...
//stream/dev/changes/foo#3 - edit change 23 (text)
//stream/dev/changes/foo#2 - edit change 21 (text)
//stream/dev/changes/foo#1 - add change 19 (text)

c:\test\changes>p4 have ...
//stream/dev/changes/foo#2 - c:\test\changes\foo

c:\test\changes>p4 -Ztag sync -n ...@30
... depotFile //stream/dev/changes/foo
... clientFile c:\test\changes\foo
... rev 3
... action updated
... fileSize 26
... totalFileSize 26
... totalFileCount 1
... change 23

c:\test\changes>p4 -Ztag sync -n ...@20
... depotFile //stream/dev/changes/foo
... clientFile c:\test\changes\foo
... rev 1
... action updated
... fileSize 6
... totalFileSize 6
... totalFileCount 1
... change 19

c:\test\changes>p4 -Ztag sync -n ...@10
... depotFile //stream/dev/changes/foo
... clientFile c:\test\changes\foo
... rev 2
... action deleted
... totalFileSize 0
... totalFileCount 1
... change 0

请注意,当同步@ 30时会报告更改23(因为它与foo#3相关联),当同步@ 20时会报告更改19(因为它与foo#1相关联),并且当同步@ 10时会报告更改0 (因为现在我们正在从工作区删除foo,即同步到foo #none)。如果我们正在同步多个文件,则报告的更改将是同步到工作区的整个文件修订组中的最高值。