我正在调查如何将源代码管理从SVN迁移到Mercurial。我不确定如何处理的一件事是提交中的用户名。从我所看到的情况来看,没有办法强制HG用户使用特定的用户名,即使在Mercurial.ini中指定,用户也可以在提交中使用 -u 标志覆盖它。 hg commit 。
公司如何处理这个问题?没有什么可以阻止开发人员A在他的存储库中作为开发人员B提交某些东西,然后将其推送给其他人。
感谢。
答案 0 :(得分:2)
我不会说我们的公司很大(4位开发人员),但到目前为止我们从来都不是一个问题。在我的搜索中,我还没有看到任何阻止这种行为的方法。我想这归结为您的开发人员之间的信任问题。
无关,我们大约两年前成功地从SVN迁移到Mercurial,所以我可以回答你的其他问题。
编辑:一个想法:
我不确定您是如何计划设置拓扑的,但我们有一台服务器作为我们所有存储库的中央存储库。可以在开发人员之间推动更改(绕过中央服务器),但我们从不这样做。我们总是在本地提交,然后从/向中央服务器推/拉。此外,我们使用https和Windows身份验证来验证此中央服务器。
如果您计划进行类似的操作,可以在服务器上创建一个钩子(请参阅repository events)(可能是precommit
事件),以验证每个提交中的用户名被推送与来自Web服务器的经过身份验证的用户相同。
不确定这是否有效,但听起来似乎是合理的。
答案 1 :(得分:0)
如果您将使用“受控制的无政府状态”工作流程(p2p通信不受控制,已确认且受信任且单一权威来源是常见的推送目标),您可以使用“每个开发者分支”范例。即,在中央仓库中使用ACL extension时,以下限制适用:
如果您无法信任(并且必须不信任)提交中的用户名,您可以信任强大的加密。 Mercurial至少有两个扩展,允许数字签名提交,从而在两种情况下提供有关作者身份的准确(一般情况,请参见下面的注释)信息
将更改提交到工作副本的根目录中的.hgsigs文件 因此需要进行额外的更改。这样做 不可能签署所有变更集。 .hgsigs文件也必须是 合并分支时像合并任何其他文件一样合并。
最后文件可以被恶意用户手动修改为WC中的任何其他文件
编辑和修正错误 Openssl可用于Commitsigs,而不是GPG扩展