2010-11-23 131 views
4

有没有办法保护自己免受Mercurial身份盗用?有没有办法保护自己免受Mercurial身份盗用?

的情况是,如果有人故意犯下的错误到使用其他开发者的名字与得到该人的目标代码解雇或误记。

有没有办法阻止这样的事情发生或者是一个非的问题?

+1

也许一个有趣的阅读(它没有解决,虽然):http://greenspringdesign.com/blog/?p=11 – Lucero 2010-11-23 10:35:19

+0

如果我的工作与其他开发人员的变化和我们分享捆回来(不污染主要回购)。最后,我可能会用他的名字来推动提交,但这将是完全合法的。 – robert 2010-11-23 10:54:55

+0

@robert,exaclty这是DVCS的重点 - 任何人都可以推送可能包含其他人所做更改的变更集。因此,您需要验证您是否信任将要推送的提交,并且可以通过对提交使用加密签名(类似于签署电子邮件或任何数据以确认身份)来实现。然后,服务器可以根据可信实体列表(证书,证书颁发机构等)检查提交签名,以确保只执行可信提交。每个签名可以与不同的所有者相匹配。 – Lucero 2010-11-23 12:14:16

回答

7

我不知道的方式实际上是限制的承诺不会因此包括“偷”的身份,但如果你有一个集中的存储库,你应该能够安全地审核谁已经推动其改变服务器,从而追查身份盗贼。


编辑:似乎是签名支持两个扩展,在CommitsigsExtension以及由GpgExtension实现看似不太安全的方式提交。

签署的变更有效防止身份盗窃,因为小偷没有他想窃取身份的私钥,因此他不能签署承诺。

0

对“主”回购和日志请求使用访问控制。如果您记录了通过身份验证推送每个提交的内容,则可以知道是谁真正推送了特定提交,而不管存储库中的信息如何。

2

Mozilla项目做到这一点的pushlog的形式。他们对网页模板进行了微小改变,以显示推送日志的输出,该推送日志在推送时使用changeset钩子很容易创建。这里是他们的日志是什么样子:

http://hg.mozilla.org/mozilla-central/pushloghtml

创建这样的日志可能是那么容易,因为钩:

[hooks] 
changeset = echo $REMOTE_USER pushed HG_NODE >> /path/to/my/pushlog 

在实践中,这是其中的一件事情,一切都认为将是一个当他们第一次听到“用户”字段完全是可证伪的,但实际上从来没有真正成为问题。