Perforce:避免在所有开发机器上使用相同的绝对本地路径?

时间:2010-10-20 06:50:21

标签: build-automation perforce perforce-client-spec

我是Perforce的新手(但我对其他系统很有经验,主要是SVN) 现在我正在尝试制作一个简单的Windows bat构建脚本,需要检查一些构建结果(对某些人有争议,我知道,但请尝试忽略,因为这是一个不同的讨论)。我正在使用p4。问题是,我似乎也是:

  • 使用与其他计算机相同的“客户端”(-c选项)。这将有一个“root”,看起来它指定了工作副本在本地的绝对路径。似乎相当“wtf?”给我......
  • 以交互方式为每台计算机创建“客户端”(与本地文件系统布局匹配)。交互性显然是自动脚本的交易破坏者。

我可以以某种方式使用当前目录,就像我可以使用SVN一样吗? 有更好的选择吗?

4 个答案:

答案 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身份使用当前工作目录。