我们想要实现的是将本地文件添加到创建的每个新工作区 我目前所做的是在“form-commit client”的触发器上运行脚本。
该触发器包含客户端计算机上应创建工作空间的路径,但当用户尝试在网络驱动器上创建工作空间时会出现问题。
发生的是文件和目录是创建的,但只有“Root”的权限,因为它们都不存在,因此在触发器的脚本完成后,perforce不能将源代码推送到目录,因为它没有权限(由于相同的原因,用户无法编辑目录和文件)。
从我的角度来看,有两个方向可以解决这个问题:
1)确保perl脚本“mkdir”命令创建具有相同父目录权限的目录。(我该怎么办?)
相关的,我在另一个关于堆栈溢出的问题中问过它。
2)仅在perforce完成“pull”命令并且perforce创建工作空间目录(触发器是什么)之后创建触发器所在的文件
提前致谢,
最大
编辑:(我在最后一发子弹上做错了,它不会起作用,因为我觉得这样做了)
我做了评论中建议的步骤,但没有成功。
我怀疑所有这些都与perforce服务用户直接相关,所以事情就是这样:
1)网络驱动器的映射方式只有我可以写入我的用户文件夹(+网络管理员)。
2)perforce trigger珍珠脚本在perforce服务器上运行(我怀疑是管理员用户。)
3)当脚本创建文件夹时,它为我(Windows域用户)+ UnixPermUid \ root + UnixPermGid \ root授予权限,这不属于这些组。
4)当我做chmod(07777,$ dir)或死亡时“无法chmod $!”;没有任何反应(也没有给出错误或许可)
5)我无法从“Windows资源管理器”或删除它的触发器中删除该文件夹。
6)接下来的步骤+触发器工作正常:
击>编辑2: 问题2的任何想法?
2)仅在“拉”之后创建触发器所针对的文件 命令由perforce完成,工作空间目录由创建 perforce(触发器是什么)
答案 0 :(得分:0)
它的解决方案是调用icacls system命令向创建工作空间的用户授予权限。
$error = system("icacls $ToWriteToDir /grant domain\\user:(OI)(CI)F /T");
上面的代码为触发脚本(创建新工作区)到网络驱动器上的目录的用户添加了完整的递归权限。
我发布了一个相关的更一般的问题here。 我决定分成两个问题,以防有人为perforce的使用案例或任何类型的服务的一般解决方案找到更相关的解决方案。