我们是由3名开发人员组成的小团队(Boss,我和另一名主要负责远程工作的开发人员),我的任务是为Mercurial HG设置存储库服务器。
似乎我可以简单地将我们的集中存储库放在共享网络驱动器上。这将非常容易设置,但似乎存在任何人都可能滥用直接工作/修改源存储库的便利的风险。这就是为什么我在考虑使用HgWebdir服务器来控制对中央存储库的访问。因此,不鼓励直接访问中央源存储库,但共享驱动器将在这里以防万一。
我想这是一个定义我们内部版本控制程序的问题,而不是真正的版本控制问题,但我仍然继续问问题。因为我觉得我没有足够的经验做出决定,如果我不能100%确定我的理由和手段是有效的,那么我可能很难强制执行版本控制系统应该被其他人使用的方式开发人员。
修改
我可以看到使用版本控制软件的共享文件夹存在潜在问题。但是,当推送到共享文件夹时,任何人都想解释一下幕后发生的事情吗?我的理解是共享驱动器本质上是一个共享链接/快捷方式,因此对于共享驱动器,本地计算机上的Mercurial只保留该链接的锁定,但事实是每个用户计算机可能有一个不同的Mercurial实例持有链接的锁定,而服务器的Mercurial实例将在物理驱动器上保留自己的链接。我可以看到它很复杂,但它会如何失败?我可以理解结论,但我不能将事实与结论联系起来
答案 0 :(得分:7)
您不应将Mercurial存储库放在网络服务器上的共享文件夹中,因为Mercurial无法在此类设置中的所有情况下可靠地保存锁定,并且在推送到该中央存储库期间,锁定对于避免损坏存储库至关重要。 / p>
事实上,我会删除“不鼓励”并将其替换为“不可能”,仅使用hgweb或hg serve
为存储库提供服务,前者是推荐的设置长期运行的服务器。
答案 1 :(得分:2)
如果您有一个集中式服务器,您可以在那里安装hgweb并从中推送和拉取作为中央和BACKED-UP源。我们仍然拥有Windows 2003服务器(我无法改变它),并且在网上进行了一些搜索,能够找到有关如何在Windows服务器上设置hgweb的信息,尽管其中大部分都是指Windows Server 2007。 / p>