现在我的本地驱动器上有我的回购。为了备份它,我必须将.hg复制到窗口的网络驱动器中。
目前 Is it a good idea to put Mercurial Repository in shared Network drive?,Lasse Karlsen说,回购不应该在网络服务器上的共享文件夹上,因为“mercurial不能在所有情况下可靠地保持锁定”。
当存储库仅由单个用户更新时,这仍然是一个问题吗?
如果是这样,有人可以向我解释为什么会发生腐败吗?
前段时间我们的IT部门设置了一个多变的服务器。
我非常喜欢mercurial(它有一个很棒的界面并且很容易使用),但如果为多个用户设置这样的痛苦,我愿意寻找一些东西其他。有没有人有任何建议(有原因)?
我正在寻找具有以下属性的修订控制程序: 2.良好的界面(允许您轻松查看多个修订版中的代码修订和更改)。 3.作为本地回购或网络回购。 4.在他们的网络上安装IT会感觉很舒服。
谢谢, 斯蒂芬
答案 0 :(得分:5)
我假设,在单独模式下(只有一个用户|一个进程,由使用过的修改存储库启动)网络驱动器上的存储库不会丢失锁定而且不会被破坏。
但任何DVCS 按设计提供更自然,更可靠的备份方式:创建原始存储库的克隆并与上游同步(hg serve
+ http-repo是简单的方法,ssh-主机和ssh型远程仓库只是稍微难点一点)
答案 1 :(得分:4)
以下是关于“repository on Samba Share”的Mercurial列表主题,其中Matt Mackall(Mercurial开发人员)说“很多人在网络上使用Mercurial很好 文件系统”。
但这不是我个人的经历。在家里(单用户场景),我在一个非常便宜的无名品牌NAS服务器上运行Mercurial repo而不是SMB(意味着低质量的协议实现),它会可靠地破坏回购。
我还在一个更严肃的企业NAS设置(意味着更高质量的协议实现)上运行了一个个人仓库,它似乎在我使用它的短时间内正常工作(很快就将repo移到适当的设置上在家里的问题之后)。
所以我想这取决于你对IT提供的网络文件系统质量的信心(“设置Mercurial服务器的问题”不会激发我个人的信心。)
答案 2 :(得分:1)
我们为共享网络驱动器(Windows环境)上的小型团队管理了我们的中央 Mercurial存储库,没有任何问题。
Mercurial很好地管理了锁,所有开发人员都很高兴。
除此之外,我们还备份了从共享驱动器到备份系统的存储库。
此设置运行了一年多,最终取代了将中央存储库放在使用 hg serve 公开它们的专用服务器上。这样做是为了让远程用户更容易访问,并且还提高了性能。
编辑:关于从 httpd 重定向到 hg服务的示例。 Mercurial hg服务使用以下命令运行:
hg serve --address 2.2.2.2 --port 8081 --prefix mercurial --accesslog /opt/mercurial/access.log --errorlog /opt/mercurial/error.log --webdir-conf /opt/mercurial/hgweb.config --pid-file /opt/mercurial/hg.pid --encoding utf8
在httpd.conf
中# Mercurial web server
ProxyPass /mercurial http://2.2.2.2:8081/mercurial
ProxyPassReverse /mercurial http://2.2.2.2:8081/mercurial
<Proxy http://2.2.2.2:8081/mercurial*>
Order deny,allow
Allow from all
</Proxy>
对http://<my httpd host>/mercurial
的任何来电都将被重定向到http://2.2.2.2:8081/mercurial
我希望这会有所帮助。