我是Perforce的新手(但我对其他系统很有经验,主要是SVN) 现在我正在尝试制作一个简单的Windows bat构建脚本,需要检查一些构建结果(对某些人有争议,我知道,但请尝试忽略,因为这是一个不同的讨论)。我正在使用p4。问题是,我似乎也是:
我可以以某种方式使用当前目录,就像我可以使用SVN一样吗? 有更好的选择吗?
答案 0 :(得分:3)
我建议每次使用客户端模板创建一个新客户端。首先,在实际构建客户端中手动创建具有视图的客户端。不要指定“所有者”,“客户端”或“根”字段。然后,每次您想要新客户端时,都会执行以下操作:
p4 client -t my-client-template-name -o my-unique-client-name >clientspec.txt
p4 client -i <clientspec.txt
my-client-template-name
是您在第一步中创建的客户端。当然,当你完成后一定要做到以下几点:
p4 client -d my-unique-client-name
答案 1 :(得分:2)
创建一个根目录为 null 的工作区,并将该库映射到该客户端。以下是客户端规范示例:
Client: client_name Update: 2010/10/20 14:18:23 Access: 2010/10/20 14:20:53 Owner: raven Host: ravens-pc Description: Created by raven. Root: null Options: noallwrite noclobber nocompress unlocked modtime rmdir SubmitOptions: leaveunchanged LineEnd: local View: //depot/... //client_name/...
您的脚本应该做的第一件事是通过设置$ P4CLIENT $环境变量来切换到此客户端:
p4 set p4client=client_name
您的脚本现在将在该客户端的上下文中工作。 由于您已指定null的根,因此您执行的任何同步都将相对于当前目录。因此,如果您在C:\ bar中同步// depot / foo / ...,您的文件将显示在C:\ bar \ foo中。
您的脚本应该做的最后一件事是清除P4CLIENT变量以将系统恢复为默认客户端规范:
p4 set p4client=
答案 2 :(得分:1)
您可以使用p4 client -i
-i标志导致从中读取客户端规范 标准输入。未调用用户的编辑器
因此,在您的构建脚本中,您将拥有一个客户端视图模板,您可以动态修改当前构建计算机并将其传递给p4 client -i
。
答案 3 :(得分:0)
显然,您可以预先创建一个根目录为“null”的客户端工作区,这将导致perforce以root身份使用当前工作目录。