【问题标题】:Mercurial remotes on the file system instead of http server文件系统上的 Mercurial 遥控器而不是 http 服务器
【发布时间】:2011-10-18 19:24:44
【问题描述】:

我目前正在从 svn 迁移到 mercurial。我的需求很简单,我需要对我们公司的 Intranet 进行源代码控制。我到处都能看到通过 IIS 设置远程存储库的示例。我只是不明白我可以在服务器上进行共享。

我仍然可以使用 NTFS 权限在 repos 上设置授权和身份验证吗?

我错过了什么吗?

谢谢

【问题讨论】:

    标签: windows mercurial ntfs


    【解决方案1】:

    将存储库放在文件共享上是可行的,但这不是 Mercurial 团队推荐的方式。

    在 HG wiki 上查看 Publishing Repositories 的“共享磁盘”部分:

    通常仅限于 Intranet,一般不推荐,因为网络文件系统可靠性的一般问题

    请务必同时查看Chris Becke's answer,因为他指出了另一个有效的缺点(具有写入权限的人从网络共享中删除内容,无论是否有意)。

    如果您知道(并且可以忍受)这些事情,那么将存储库放在网络共享上无疑是最简单的设置方法。

    我的个人经验是,只要 Windows 共享位于“真正的”Windows 机器上,它就可以完美运行。
    在工作中,我们在真正的 Windows 服务器上使用共享没有问题,但在家里我遇到了 NAS 的问题(它的行为类似于 Windows 共享,但实际上在 Linux 上运行)。
    你可以在这里阅读更多关于我的经历:
    Can you 'push' to network share using Mercurial on 64bit Windows 7?

    【讨论】:

    • 主要问题是如果您失去了网络连接,或者如果服务器/共享存在锁定问题(例如 NAS),那么如果在推送过程中发生某些事情,则没有清理步骤。无法保证存储库仍然有效。当然,本地或服务器都没有 100% 的保证,但是当出现问题时,它正常的可能性会大大增加。
    • 是的,我知道。我们在工作中从未遇到过问题(在使用 HG 近两年之后),但我知道它随时可能发生。问题是,所有其他托管存储库的方法似乎设置起来很复杂,而且我从来没有时间去思考它,而将存储库放在网络共享上很容易并且正常工作(是的,以后可能会出现一些问题,但一开始它就可以了!)。不幸的是,我们必须在工作中自己进行托管(对于我的私人项目,我现在正在使用 Bitbucket,但在工作中无法在外部托管我们的代码)。
    【解决方案2】:

    有很多理由更喜欢可写文件共享。

    本质上归结为,通过网络方法进行推送的能力对某人造成的损害是有限的。 另一方面,读/写共享是推送所必需的,但也允许用户删除整个 repo、历史记录和所有内容。

    人们(或恶意软件代理)甚至在不调用恶意意图的情况下,就知道导航到随机网络共享并意外地将文件拖到不属于它的地方。

    锁定您的 PC 的最佳理由不是因为您的同事觉得使用未锁定的电子邮件帐户向 HR 发送色情内容很有趣,而是因为清洁女工可以用一块抹布和一个键盘做的事情令人惊叹。音乐库应用程序在扫描工作组中的所有共享并仔细“移动”和目录到某人的库时可以找到的内容也令人惊讶。

    【讨论】:

    • 如果我强制执行权限以拒绝对根文件夹和 .hg/* 的任何删除怎么办?此外,仅允许开发组对存储库进行读/写。每个本地 repo + 真实备份也将备份远程 repo。所以,我真的没有看到这里有什么大问题..
    • 你是对的,当只有开发人员可以访问共享时,操纵的机会很小。我们也在这样做,而且效果很好。但即使开发人员都是技术人员并且知道他们在做什么:正如 Chris 在他的回答中指出的那样,有人不小心将文件夹拖到其他地方的可能性总是确实存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2017-09-06
    • 2012-08-01
    • 2017-07-15
    • 2015-07-07
    • 2017-12-25
    • 2014-12-22
    相关资源
    最近更新 更多