【问题标题】:Perforce client side pre-commit hookPerforce 客户端预提交钩子
【发布时间】:2013-04-09 19:54:33
【问题描述】:

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

【问题讨论】:

    标签: perforce pre-commit-hook


    【解决方案1】:

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

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

    详情请见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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        • 谢谢,我希望它在客户端的原因是我不希望它成为所有开发人员的预提交挂钩,但特定组。
        • 很容易实现一个服务器端触发器,该触发器仅针对特定用户在预提交挂钩上实现,因为用户名与更改列表信息一起可用。我想要实现客户端预提交钩子的原因是不同的,但我希望能够对只有用户机器知道的信息进行检查。例如,预提交检查以确保用户在签入之前测试了可执行文件,或者预提交检查以扫描构建中涉及但尚未添加到更改列表中的文件。
        • 我们有类似的需求。在 CLIENT 上强制提交之前调用 make 文件的任何方式
        猜你喜欢
        • 2012-04-10
        • 2011-06-15
        • 2011-03-28
        • 2013-10-03
        • 2013-12-15
        • 2017-02-08
        • 2016-09-02
        • 2014-11-06
        相关资源
        最近更新 更多