水银常见问题
3. 一般使用
3.2. 使用水银做分布式开发时应当遵循哪些最佳实践原则?
参考这些典型的 工作实践 。
3.6. 如何确保只有我允许的人才能向仓库里做贡献/提交/签入/推送变更集?
水银允许用户对他/她们的仓库副本做任何事、与任何人分享,所以,在水银中对提交操作做限制是不太可能的(然而呢,要注意,在集中式仓库中的提交与水银中的提交不是一回事)。然而,最关键的操作实际上是 推送 ( push )操作,因为这是仓库的副本之间交换变更集的时刻,所以作为一个“官方”仓库是需要能够拒绝那些“未被验证的”变更集的:就是那些来自于未知的或未被允许的人的变更集。所以呢,尽管可能潜在地存在许多副本,有狠多人(已知或未知)对这些副本做他/她们想做的事,但是呢,任何想要进入“官方”仓库的变更集都必须由一个“已验证”或“已认证”的人来推送;那个人同时对该变更集负责。
有一个扩展,提供一个验证功能,它就是 commitsigs扩展 。
4. 普遍问题
4.5. 仓库损坏了,救命!
请阅读此页面 "处理仓库和目录的损坏情况" ,以了解一些关于该怎么做的建议。
4.7. 尝试推送变更集时,收到一个"ssl required"错误消息
那是因为,允许匿名人物使用未认证的HTTP客户端来推送变更集到妳的仓库中,是一件非常危险的事。如果妳是处于一个私有网络中,并且妳知道所有的 HTTP客户端都是可信的,那么妳可以将以下内容
添加到 服务器 端仓库的 .hg/hgrc 文件里。(参考 HgWebDirStepByStep .)
然而,仍然有足够的理由来强制使用SSL。如果妳不信任妳正在使用的网络的话,就 不要 改变这个。
4.17. 我希望在有人提交时收到一封邮件!
7. 技术细节
7.1. 水银有哪些限制?
水银目前假设所有的单个文件、索引和 清单 都可以装入内存中,这是出于性能考虑的。
除此之外,应当不存在对于文件名长度、文件尺寸、文件内容、文件个数及版本数的限制(参考 RepoSamples 以了解一些示例 仓库 的尺寸。)
文件名不可以包含空(null)字符或换行符。提交者的地址不可以包含换行符。
水银主要是在UNIX 系统上开发的,所以可能带有某些UNIX主义的特点。
水银在将文件储存到仓库中时会将文件名做编码(参考 CaseFolding 、 CaseFoldingPlan 、 fncacheRepoFormat )。最值得注意的是,文件名中的大写字母在仓库中的文件名里是以两个字符来编码的( "FILE" → "_f_i_l_e" )。
7.3. 水银是如何处理二进制文件的?
水银的核心部分会跟踪文件内容,但从不修改文件内容,因此是二进制安全的。参考 BinaryFiles ,以了解更多关于那些会解析文件内容的命令的讨论,例如merge、diff、export和annotate 。
7.12. "hg commit"命令是如何确定有哪些文件发生变更了的?
如果在执行 hg commit 时不带文件名作为参数的话,那么它就会将所有已经“变更”的文件提交(参考 提交 )。注意,水银对于那些既没变动文件时间也没变动文件尺寸的文件是不会认为是“变更”的(我们的设计就是如此。参考 issue618 中的 msg3438 和 DirState )。