2

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

我在 CL 2000。我想同步到任何 X 并且取消搁置 1000,因此我的代码与搁置时完全相同。我该怎么做呢?

4

1 回答 1

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 将 otherfile 更新为修订版 7,并且更改 999 仅包含 otherfile。

由于otherfile从未被搁置,并且上面最新搁置的修订来自change 998,因此您无法根据搁置来判断客户端工作区是同步到change 998还是change 999。

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

于 2011-09-14T03:01:24.370 回答