在Ubuntu上使用Perforce命令行创建客户端工作区

问题描述 投票:13回答:8

我正在编写一个脚本来在Ubuntu构建机器上构建所有项目。

每个项目都存储在Perforce中,我使用p4来执行上述操作。

我使用的命令是:

p4 -u <MyUsername> -P <MyPassword> client MyWorkspace

这运行并加载vim,然后我需要执行:wq [Enter]退出。

我可以自动保存或避免加载vim吗?

ubuntu perforce
8个回答
15
投票

对于我的构建,我有一个文本文件,我在perforce中,包含我的客户端。这样我知道客户端在该构建中的样子(我不使用spec depot)。

这么简单:

type client.txt | p4 client -i

或者在Ubuntu上:

more client.txt | p4 client -i

从perforce中的txt文件创建客户端。您可以通过执行p4 client -o <client_name>创建文本并从那里更改它。


6
投票

你可能想尝试p4 client -i。从帮助页面:

-i标志从标准输入读取客户机规范。不调用用户的编辑器。

因此,您在脚本中构建客户端规范并将其传递给p4 client -i。此外,-t也可能有所帮助:

-t标志通过使用指定客户端的视图和选项作为模板来构造客户端视图,而不是使用现有视图或创建新的默认视图。


4
投票

我使用heredocs来最小化对临时文件的需求

export P4CLIENT=tmp_$$
p4 client -i <<HERE
Client: ${P4CLIENT}
Root: /tmp/${P4CLIENT}
Stream: //OurStreamDepot/${branch}
HERE

您只需要指定Client:Root:Stream:字段(如果您使用的是较旧的//软件仓库样式,则需要指定View:


3
投票

您不需要为每个构建创建新客户端。您可以重复使用同一个客户端,只需运行“p4 sync”即可使用当前版本的代码更新文件系统。


2
投票

我绝对同意Byran's answer。您每次要进行构建时都需要创建一个唯一的客户端。使用相同工作区的多个项目没有问题;如果要在同一台计算机上并行运行构建,则只需创建多个工作区。创建新工作区并对每个构建执行完全同步将显着增加构建时间。

如果需要确保具有干净的工作空间,请将中间路径和输出路径配置为指向文件夹层次结构中最高位置的公共位置。

Root
 /Bin
 /Intermediate
 /Source

这样你只需要删除这两个目录并执行p4 sync //filespec/来进行干净的构建。


1
投票

我不完全确定我理解你要做什么,但如果你想继续使用同一个客户端,要么设置你的变量P4CLIENT=MyWorkspace或使用

p4 -u <MyUsername> -P <MyPassword> -c MyWorkspace


0
投票

如果您希望将整个过程保留在perforce中,请创建一个名为client_template的模板工作区/客户端并将其传输到

p4 client -o -t client_template new_client|p4 client -i

-1
投票

假设您位于客户端工作区的工作目录中,则采用不同的方法:

echo "P4CLIENT=MyWorkspace" > .perforce
export P4EDITOR=true`

然后

p4 client

将创建工作区(如果它是新工作区)或提及类似:

Client MyWorkspace not changed.
© www.soinside.com 2019 - 2024. All rights reserved.