Perforce客户端预提交钩子

Perforce客户端预提交钩子,perforce,pre-commit-hook,Perforce,Pre Commit Hook,我们使用perforce作为VisualStudio解决方案的源代码控制。 使用P4和P4V。 是否可以添加客户端预提交挂钩?例如,确保*.js文件中不存在单词“debugger;”。 可以在谷歌上找到一些东西。 谢谢。Perforce触发器可用于强制执行此类策略,但它们在服务器上运行,而不是在客户端运行。因此,我所知道的大多数网站都会强制执行一条规则,比如您描述的在服务器中使用更改内容触发器的规则 从你的问题看,你不清楚为什么需要客户端钩子。您不想使用更改内容触发器有什么原因吗 也许您可以考

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

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

从你的问题看,你不清楚为什么需要客户端钩子。您不想使用更改内容触发器有什么原因吗


也许您可以考虑将您的工作流重新构建为代码审查过程,并在您选择的代码审查工具中执行这样的策略。

< P>您可以使用的一种方法是“自定义工具”:


基本上,您可以编写一个脚本,将变更列表作为参数,检查变更列表中每个文件的条件,如果成功,则调用p4 commit。

使用最新的
git-p4
。我的hook
p4 pre submit
补丁被合并到Git的
next
分支中

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

有关详细信息,请参阅

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

钩子
p4 pre-submit
git/git-p4
没有其他交互,只有退出状态。因此,您可以用任何语言编写钩子(我推荐python)

下面是示例
.git/hooks/p4预提交

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

谢谢,我希望它出现在客户端的原因是我不需要它;I don’’我不希望它在所有开发人员身上都是预提交钩子,但在特定的组上除外。实现一个只在预提交钩子上为特定用户实现的服务器端触发器是很容易的,因为用户名可以与变更列表信息一起使用。但是,我想要实现客户端预提交钩子的原因不同,我希望能够对只有用户机器知道的信息运行检查。例如,预提交检查确保用户在签入前测试了可执行文件,或预提交检查扫描生成中涉及但尚未添加到变更列表的文件。我们有类似的要求。在客户端上执行提交之前调用make file的任何方法