3

我正在将我们公司的 SCM 从 SVN 迁移到 mercurial。

目前的情况是这样的。SVN 在专用于它的单独 Ubuntu 服务器上运行。因此,所有开发人员都在使用在 Ubuntu 服务器上创建的用户使用“svn+ssh”协议从他们的个人机器上签入和签出代码。结果,无论他们在 SSH 上使用哪个用户,它都会作为变更集的作者记录在存储库中。

那么,在 Mercurial 中,是否可以使用在 Ubuntu 上创建的同一组用户在开发人员通过 SSH(而不是 hgrc 中设置的本地用户名)签入时使用并记录为作者?

hg clone ssh://user@192.168.2.2//hg/support

是我想要使用的。它有效,但对于作者问题。

4

1 回答 1

6

不,这是不可能的。您遇到了集中式版本控制和分散式版本控制之间的根本区别。

在 DVCS 中,作者在每个开发人员的本地配置中进行配置,并在提交更改时立即设置。在此之后,提交是不可变的,它的哈希是固定的,因此当你推送它时,服务器没有能力改变作者

这不被认为是一个问题,口头禅是:如果您不信任您的开发人员设置正确的名称,那么您可能不应该首先让他们访问推送代码。作者只是有用的元数据,不具有权威性。

如果您仍然需要以某种方式记录它,您可以做的是创建一个推送日志,使用一个挂钩记录哪些用户推送了哪些变更集。例子就在那里,例如 Mozilla 有一个,谷歌搜索“mercurial pushlog”。

于 2012-06-07T13:28:07.797 回答