Perforce 如何在已搁置的变更列表处签出Performce工具架?

Perforce 如何在已搁置的变更列表处签出Performce工具架?,perforce,shelve,unshelve,Perforce,Shelve,Unshelve,我有一个性能良好的货架,是CL 1000。它被另一个人搁置在某个未知的CL X 我在CL 2000。我想同步到任何X,并取消自我1000,因此我的代码与搁置时完全相同。如何做到这一点?不幸的是,无法保证他们搁置时整个客户机工作区只同步到一个变更列表。在极端情况下,他们可能会以不同的更改编号同步每个文件 也就是说,它们可能是同步到一个时间点的,您可以从它们的工具架中文件的修订号推断出这一点 $ p4 files @=1000 //depot/foo/bar.txt#3 - edit change

我有一个性能良好的货架,是CL 1000。它被另一个人搁置在某个未知的CL X


我在CL 2000。我想同步到任何X,并取消自我1000,因此我的代码与搁置时完全相同。如何做到这一点?

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

也就是说,它们可能是同步到一个时间点的,您可以从它们的工具架中文件的修订号推断出这一点

$ p4 files @=1000
//depot/foo/bar.txt#3 - edit change 1000 (text)
//depot/baz/quux.c#5 - edit change 1000 (text)
文件名后的版本号表示用户在打开每个搁置文件进行编辑之前同步的每个搁置文件的版本

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

$ 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之后或包括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
让我们进一步说,是Change999将otherfile更新为修订版7,而Change999只包含otherfile

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


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

如果您还需要P4V的说明,请告诉我。太好了!我可以编写这样的脚本:
p4文件@=$1|grep-e“集成更改”-e“编辑更改”| sed-e“s/\(#.....^]*\)./\1/“| xargs p4文件| sed-e“s/*change\([0-9]*\)./\1/”|排序-u|尾--行=1
,尽管我猜它们是否在对搁置的更改列表中的文件进行了任何更改后同步,但我无法判断。(CL 1000的一部分取决于对//depot/buzz.c的更改,他们对该更改进行了更新,但没有修改。)这就是你最后一句话的意思吗?正确。我已经澄清了最后一句话,并将其扩展为“上述注意事项”部分。