如何在搁置的变更清单上查看一个perforce货架?

时间:2011-09-13 23:38:40

标签: perforce shelve unshelve

我有一个CL 1000的perforce架子。它被一些不知名的CL X的其他人搁置。

我在CL 2000.我想同步到X和unhelf 1000,所以我的代码与搁置时的代码完全相同。我该怎么做?

1 个答案:

答案 0 :(得分:3)

不幸的是,无法保证他们的整个客户端工作区在搁置时只被同步到一个更改列表。在极端情况下,他们可以使用不同的更改编号同步每个文件。

也就是说,它们可能已经同步到一个时间点,而你可以从它们架子上的文件的修订号中推断出来。

$ p4 files @=1000
//depot/foo/bar.txt#3 - edit change 1000 (text)
//depot/baz/quux.c#5 - edit change 1000 (text)

文件名后面的修订号表示用户在打开它们进行编辑之前同步的每个搁置文件的修订版。

然后,您可以使用每个文件路径和修订版运行p4 files以获取更改号码:

$ p4 files //depot/foo/bar.txt#3 //depot/baz/quux.c#5
//depot/foo/bar.txt#3 - edit change 983 (text)
//depot/baz/quux.c#5 - edit change 998 (text)

从第二个命令中选择更改号码的最大,然后尝试将客户端同步到该命令。

注意上述

即使我们假设他们同步到一个时间点,上面也不是万无一失的。它只告诉我们他们在998之后或1000之前同步了一次变化。

假设他们已同步更改999.他们的客户端工作区可能看起来像这样:

$ p4 have
//depot/an/otherfile#7 - /home/user/a/an/otherfile
//depot/foo/bar.txt#3 - /home/user/a/foo/bar.txt
//depot/baz/quux.c#5 - /home/user/a/baz/quux.c

让我们进一步说,更改999将其他文件更新为版本7,并且更改999仅包含其他文件。

由于其他文件从未被搁置,并且上面的最新搁置修订来自更改998,因此您无法根据货架结束客户端工作区是否已同步更改998或更改999.

更大的警告是,如果他们将不同的文件同步到不同的更改号码,这一切都会崩溃,但通常人们不这样做。