我正在编写一个脚本来在Ubuntu构建机器上构建所有项目。
每个项目都存储在Perforce中,我使用p4来执行上述操作。
我使用的命令是:
p4 -u <MyUsername> -P <MyPassword> client MyWorkspace
这会运行并加载vim,然后我需要执行:wq [Enter]退出。
我可以自动保存或避免加载vim吗?
答案 0 :(得分:15)
对于我的构建,我有一个文本文件,我在perforce中包含我的客户端。这样我知道客户端在该构建中的样子(我不使用spec depot)。
这么简单:
type client.txt | p4 client -i
或在Ubuntu上:
more client.txt | p4 client -i
从perforce中的txt文件创建客户端。您可以通过执行p4 client -o <client_name>
来创建文本,然后从那里进行更改。
答案 1 :(得分:6)
您可能想尝试p4 client -i
。从帮助页面:
-i标志从标准输入读取客户端规范。不调用用户的编辑器。
因此,您在脚本中构建客户端规范并将其传递给p4 client -i
。此外,-t
也可能有所帮助:
-t标志使用指定客户端的视图和选项作为模板构建客户端视图,而不是使用现有视图或创建新的默认视图。
答案 2 :(得分:4)
我使用heredocs来最小化对临时文件的需求
export P4CLIENT=tmp_$$
p4 client -i <<HERE
Client: ${P4CLIENT}
Root: /tmp/${P4CLIENT}
Stream: //OurStreamDepot/${branch}
HERE
您只需指定Client:
,Root:
和Stream:
字段(如果您使用的是较旧的//软件仓库样式,则需要View:
)
答案 3 :(得分:3)
您无需为每个构建创建新客户端。您可以重复使用同一个客户端,只需运行“p4 sync”即可使用当前版本的代码更新文件系统。
答案 4 :(得分:2)
我绝对同意Byran's answer。您每次要进行构建时都需要创建一个唯一的客户端。使用相同工作区的多个项目没有问题;如果要在同一台计算机上并行运行构建,则只需创建多个工作区。创建新工作区并对每个构建执行完全同步将显着增加构建时间。
如果您需要确保拥有干净的工作区,请将中间路径和输出路径配置为指向文件夹层次结构中最常见的位置。
Root
/Bin
/Intermediate
/Source
这样您只需删除这两个目录并执行p4 sync //filespec/
即可进行干净的构建。
答案 5 :(得分:1)
我不完全确定我理解您要做的是什么,但如果您想继续使用同一个客户端,请设置变量P4CLIENT=MyWorkspace
或使用
p4 -u <MyUsername> -P <MyPassword> -c MyWorkspace
。
答案 6 :(得分:0)
如果您希望将整个过程保留在perforce中,请创建一个名为client_template
的模板工作区/客户端并将其通过管道输入
p4 client -o -t client_template new_client|p4 client -i
答案 7 :(得分:0)
只需在“ p4登录”之后运行命令“ p4客户端”。运行命令后,它将询问所有详细信息。您只需按照您的要求填写这些详细信息即可。
主要,您只需要关注临时文件中的两个参数。保存文件后,便会创建客户端。
根:这是本地存储库路径。例如
根:/用户/代码库/代码
查看:您要从客户端映射到远程软件仓库的流。例如
查看:
// exp / main / ... // expbuild_centos /...
[root@no1011142063123 ~]# p4 client "expbuild_centos"
Client expbuild_centos saved.
[root@no1011142036123 ~]#
答案 8 :(得分:-1)
另一种方法,假设您位于客户端工作区的工作目录中:
echo "P4CLIENT=MyWorkspace" > .perforce
export P4EDITOR=true`
然后
p4 client
如果工作区是新工作区,将创建工作区,或提及类似:
Client MyWorkspace not changed.