删除的文件是否仍然使用hg克隆下载?

Mar*_*eon 3 mercurial delete-file mercurial-bigfiles

在我们的Mercurial仓库中,我们添加了一个非常大的文件(并进行了hg推送),然后删除了大文件(并进行了另一次推送).

现在,如果有人做了hg clone遗嘱,他们​​仍然会删除那个大文件?我知道它不会出现在他们的工作目录中,因为它已被删除,但该文件是否仍会被下拉并存储在Mercurial内部存储中?

我想确保人们不必下拉文件.我已经知道真正的大文件应该存储在Mercurial之外,所以我删除了该文件.但是我想知道人们是否还会删除大文件 - 在这种情况下我想我会从头开始重新创建存储库.

ang*_*son 6

当然它仍然在存储库中.

您可以随时更新回旧版本,如果您更新回到提交文件时所获得的修订版本,那么它将完全归功于它.

有两种方法可以缓解这种情况(当你提交时,而不是现在):

  • 其中一个大文件扩展,这些本质上是将大文件添加到辅助存储库并链接这两个,所以如果你更新到文件不存在的修订版,而你还没有它,它就不会得到更新.即.它更像是一种"按需"的拉动方式
  • 如果文件永远不会更改,请将其保留在网络上,只需创建某种链接即可,而不是完整副本

现在,你有四个选择:

  • 删除添加文件的变更集以及之后的所有变更集.您可以使用Mercurial Queues扩展来实现.请注意,您需要在所有克隆中执行此剥离操作.如果只有一个用户将其历史记录中包含该文件的存储库推回到中央克隆,则会返回更改集.
  • 手动从头开始重建存储库
  • 使用该hg convert命令和一些过滤,--filemap可以使用该选项
  • 保持原样.它有多大,将是一个多大的问题?

请注意,手动或通过重建存储库hg convert将使所有克隆无效.任何试图从旧克隆推送到新的中央克隆的人都会得到一条消息unrelated repositories.如果你的任何用户都是stupi ^ H ^ H ^ H ^ H ^ Hnot足够聪明,意识到强制推送是一个坏主意,那么你将遇到这种方法的问题.