Perforce - 如何在未保存模板表单时防止“p4 客户端”创建客户端?

时间:2021-04-06 23:14:48

标签: client perforce specifications

p4 client <no args> 的 Perforce 文档指出:

<块引用>

p4 客户端命令将客户端规范放入一个临时文件并 调用由环境变量 P4EDITOR 配置的编辑器。 对于新工作区,客户端名称默认为 P4CLIENT 环境变量(如果已设置)或当前主机名。保存 文件创建或修改客户端规范。

我在我们的网络上看到的是,无论如何都会创建客户端,即使我没有保存就退出。

例如

[cad_test_user@sws-cab9-0 ~]$ pwd
/home/cad_test_user
[cad_test_user@sws-cab9-0 ~]$ env | grep P4
P4EDITOR=
P4PORT=tcp:p4p:1666
P4DIFF=tkdiff
P4CONFIG=.p4config
P4IGNORE=.ignore
P4USER=cad_test_user

[cad_test_user@sws-cab9-0 ~]$ p4 clients | grep sws-cab9-0
[cad_test_user@sws-cab9-0 ~]$ p4 client
Client: sws-cab9-0
Owner:  cad_test_user
Host:   sws-cab9-0.aus5.mythic-ai.com
Client sws-cab9-0 saved.
Root:   /home/cad_test_user
Options:        noallwrite noclobber nocompress unlocked nomodtime normdir
SubmitOptions:  submitunchanged
LineEnd:        local
View:
<quit without save>
Client sws-cab9-0 saved.

[cad_test_user@sws-cab9-0 ~]$ p4 clients | grep sws-cab9-0
Client sws-cab9-0 2021/04/06 root /home/cad_test_user 'Created by cad_test_user. '

现在作为 .p4config 层次结构之外的另一个用户,我得到了一个意外的 %clientroot% 值:

[cad_test_user@sws-cab9-0 /]$  p4 -F %clientRoot% -ztag info
/home/cad_test_user

我想知道我们的默认设置是否有问题;为什么即使没有写入也会创建和保存客户端?理想情况下,我想在某种程度上管理默认规范,例如:

  1. 合成客户端名称,使其永远不是主机名,例如 c:$USER:foo
  2. 没有“主持人”:
  3. 将“根:”定义为个人的某个地方
  4. 除非用户执行写退出操作,否则不要创建客户端!

感谢您的回答!

1 个答案:

答案 0 :(得分:2)

设置一个触发器(form-save 表单上的 client 触发器)来拒绝不符合您标准的客户。很难直接强制执行 #4,但只要您的其他条件中至少有一个需要编辑表单,间接处理就足够了。

请注意,您可以将 form-save 触发器与修改默认客户端表单的 form-out 触发器配对 -- 例如,您可以将 Root 替换为明显无效的字段,例如 {{1 }} 然后确保您的 --ENTER SOMETHING PERSONALIZED HERE-- 触发器拒绝它。 Perforce sys 管理指南有一些不错的简单示例触发器,其中之一演示了自定义客户端规范默认值:https://www.perforce.com/manuals/p4sag/Content/P4SAG/scripting.triggers.forms.out.html

根据您的标准 #2,我建议您不要这样做,除非您所在的环境多台主机共享一个文件系统是司空见惯的。默认的主机护栏可通过以使工作区状态失控的方式重用客户端规范来防止您混淆(并可能丢失数据)。

相关问题