我正在调查在公司环境中使用Mercurial。该计划是使用由Web服务器(IIS)托管的中央存储库,开发人员一旦在本地或团队中测试了更改,就会推送到这些存储库。
我已将IIS配置为针对Active Directory对用户进行身份验证,但似乎存在漏洞,虽然我可以强制执行谁可以推送,但我无法强制他们将自己的更改集签名为自己。
例如,给定一个基本的“提交”场景:
在第1步中,用户将用户名(通过他们的.hgrc文件或其他内容)提供给他们的本地存储库,但实际上没有任何方法可以强制执行这是他们的“真实”用户名。
在第2步中,用户必须向IIS提供他们的“真实”凭据以允许推送,但他们的更改集将在历史记录中显示在步骤1中他们提供的任何用户名。看起来如果bob使用“爱丽丝“作为第1步的用户名,他可以确保爱丽丝对他的任何错误变化负责。
有没有办法确保这些用户名在推送过程中匹配(通过挂钩或其他东西)?或者,还有其他一些方法可以确保在变更中保持合理的真实性水平吗?
编辑:经过进一步考虑,我想我实际上并不想强制执行这些名称排队;如果鲍勃和爱丽丝一直在一个单独的回购协作,鲍勃应该最终能够推动他们所有的变化,而不仅仅是他自己。我真正想要的只是确保如果归结为它,我可以告诉谁以更明确的方式进行了哪些更改,而不仅仅是应用了任何用户名。
我在想GpgExtension是答案的一部分,但我仍然认为我没有全面了解。
答案 0 :(得分:1)
我最终找到了this discussion,这实际上说我的选择实际上是让每个人都使用GPG签署变更集,或者在mercurial之外设置一个“pushlog”来跟踪用户将内容推送到中央存储库的内容。 / p>
Ry4an还指出了这个(基本上是重复的)question,并提供了一些很好的答案,证实了我在别处找到的内容。