Ank*_*wal 3 perforce p4v changelist
在perforce中,变更列表会在提交时重新编号.因此,例如,当创建更改列表时,它将编号为777,但在提交更改列表时,它将重新编号为790.
我的问题是如果我知道旧的CL编号777,如何获得新的CL编号(790),反之亦然?
我能想到的唯一方法是将原始更改列表编号添加为更改列表描述字段的一部分.首先,您需要一个脚本来存储原始更改列表编号:
#!/bin/env perl
$id = $ARGV[0];
open (CHANGE_IN, "p4 change -o $id|");
open (CHANGE_OUT, "|p4 change -i $id");
while (<CHANGE_IN>)
{
if (/^Description:/ and not /ORIGID/)
{
s/(^Description:)(.*)$/$1 ORIGID $id. $2/;
}
print CHANGE_OUT $_;
}
close (CHANGE_IN);
close (CHANGE_OUT);
Run Code Online (Sandbox Code Playgroud)
将此设置保存为Perforce服务器上的origid.pl并设置可执行位.然后设置一个触发器p4 triggers.
Triggers:
add_origid change-submit //depot/... /usr/bin/origid.pl %change%
Run Code Online (Sandbox Code Playgroud)
如果您确实需要原始更改列表编号,可以从Perforce中检索,而无需在说明中嵌入原始更改列表编号.您可以使用-ztag命令行选项来获取它.而你只能通过'changes'命令(据我所知)得到它:
d:\sandbox>p4 submit -c 24510
Submitting change 24510.
Locking 1 files ...
edit //depot/testfile.txt#2
Change 24510 renamed change 24512 and submitted.
d:\sandbox>p4 -ztag changes -m1 //depot/testfile.txt
... change 24512
... time 1294249178
... user test.user
... client client-test.user
... status submitted
... oldChange 24510
... desc <enter description here>
<saved
Run Code Online (Sandbox Code Playgroud)
正如所指出的那样,它可能没那么有用.但是,我确实想要注意到它可以实现它.