Perforce客户端预提交挂钩

时间:2013-04-17 06:56:24

标签: perforce pre-commit-hook

我们使用perforce作为Visual Studio解决方案的源代码控制。 使用P4和P4V。 是否可以添加客户端预提交钩子?例如,确保“调试器”一词; * .js文件中不存在。 可以在谷歌找到一些东西。 感谢。

3 个答案:

答案 0 :(得分:4)

Perforce触发器可用于强制执行此类策略,但它们在服务器中运行,而不是在客户端运行。因此,我所知道的大多数网站都会强制执行规则,例如您在服务器中使用更改内容触发器描述的规则。

http://www.perforce.com/perforce/doc.current/manuals/cmdref/triggers.html

从你的问题来看,为什么你需要一个客户端钩子并不明显。是否有某些原因您不想使用更改内容触发器?

也许您可以考虑将工作流程重新构建为代码审核流程,并在您选择的代码审核工具中实施此类政策。

答案 1 :(得分:1)

您可以使用的一种方法是“自定义工具”: https://www.perforce.com/perforce/doc.current/manuals/p4v/custom_tools.html

基本上你会写一个脚本,它将变更列表作为一个arg检查你的变更列表中的每个文件的条件,如果成功则调用p4 commit。

答案 2 :(得分:0)

使用最新的git-p4。我对钩子p4-pre-submit的补丁已合并到Git的next分支中。

挂钩是一个简单的可执行脚本,如果脚本以非零状态存在,它将停止提交过程以启动。因此,p4-pre-submit钩子非常安全,没有任何副作用。

有关详细信息,请参见https://github.com/git/git/blob/next/Documentation/git-p4.txt

请注意git-p4是一个独立的python脚本。它不依赖于任何特定版本的git。因此,您只能升级git-p4

挂钩p4-pre-submitgit/git-p4除退出状态外没有其他交互。因此,您可以使用任何语言编写该钩子(我建议使用python)。

以下是示例.git/hooks/p4-pre-submit

#!/bin/sh
cd $GIT_DIR && make test