微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mercurial挂钩,用于测试推送到存储库时用户名是否有效

如何解决Mercurial挂钩,用于测试推送到存储库时用户名是否有效

|| 我有一个“中央”存储库,我想确保没有人使用错误用户名将更改推送到其中。 但是我不知道如何制作一个挂钩来测试用户名是否为肯定列表。我在Mercurial API中发现了一个ctx.user()调用,这似乎是我要针对其肯定列表进行测试的对象。 同样,该挂钩可以是作为存储库克隆的一部分分发的预提交挂钩,也可以是中央存储库上作为预输入或类似内容的挂钩。 任何帮助或指针将不胜感激。     

解决方法

我在Bitbucket上发布了两个功能示例。这两个示例都是用于在提交消息中搜索某些特定格式的文本(例如,问题跟踪的案例ID),但可以很容易地进行修改以针对有效用户列表检查用户。 第一个示例实际上是包裹\'commit \'命令的Mercurial扩展名。如果找不到合适的文本(或您的情况下的有效用户),则将完全阻止提交。您可以通过添加以下行,在.hgrc文件中启用此功能:
[extensions]
someName = path/to/script/commit-msg-check.py
第二个示例使用进程内pretxncommit钩子,该钩子在完成提交后到永久变为之前运行。如果此检查失败,它将自动回滚提交。您可以通过添加以下几行来在.hgrc文件中启用此功能(假设您保留了相同的文件/函数名称):
[hooks]
pretxncommit.example = python:commit-msg-check-hook.CheckForIssueRecord
您可以在这些挂钩中执行任何喜欢的Python代码,因此可以通过多种方式进行用户验证。     ,感谢示例dls。 最后,我决定将其作为
pretxnchangegroup
钩子运行,然后使用
hg log
grep
来测试提交的author字段:
[hooks]
pretxnchangegroup.usercheck = hg log --template \'{author}\\n\' -r \\ 
$HG_NODE: | grep -qe \'user1\\|user2\\|etc\'
当然,除了usercheck失败之外,它不会提供很好的反馈。但是我认为目前已经足够了。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。