我们在公司的内网中使用了 mercurial,由于防火墙限制,暂时无法通过其他方法发布,只能通过共享磁盘进行发布。我知道这不是理想或推荐的方法,但是,它现在可以了(如果我最终获得服务器,我正在设置 RhodeCode)。
我们发现,通过使用我们的Active Directory帐户通过Windows共享我们的存储库文件夹(右键单击文件夹,与特定人员共享),我们真的可以轻松共享我们的更改,但是我想完全阻止有人推送到存储库的可能性。
我99%确定HTTP没有被使用,所以传统方法不应该工作。我甚至在寻找一种解决方法,因为我认为无论如何都无法直接从 Mercurial 配置中限制它。
只要您确定人们正在使用push
和pull
从共享目录中获取更改(这是唯一安全的方法!),您仍然可以在这些存储库中使用钩子来阻止推送。 存储库的 .hg/hgrc
文件中的类似内容将阻止推送:
[hooks]
pretxnchangegroup.denyall = /bin/false
其中/bin/false
是Windows上的任何可执行文件,始终返回false/非零。
此外,请考虑通过在共享存储库中执行hg update null
来使共享存储库成为裸存储库。 这会从工作目录中删除所有文件,因此没有人想在那里进行编辑。
每个人都可以共享他们的存储库(只读),并要求其他人(包括官方存储库的维护者)从中提取。