Mercurial 已删除的文件是否仍使用hg克隆下载?
在我们的Mercurial回购协议中,我们添加了一个非常大的文件(并进行了hg推送),然后删除了这个大文件(并进行了另一次推送) 现在如果有人做了一个Mercurial 已删除的文件是否仍使用hg克隆下载?,mercurial,delete-file,mercurial-bigfiles,Mercurial,Delete File,Mercurial Bigfiles,在我们的Mercurial回购协议中,我们添加了一个非常大的文件(并进行了hg推送),然后删除了这个大文件(并进行了另一次推送) 现在如果有人做了一个hg克隆,他们还会拉下那个大文件吗?我知道它不会出现在他们的工作目录中,因为它被删除了,但该文件仍然会被拉下来并存储在Mercurial内部存储中吗 我想确保人们不必拆下文件。我了解到真正大的文件应该存储在Mercurial之外,所以我删除了该文件。但我想知道人们是否仍会删除这个大文件——在这种情况下,我想我会从头开始重新创建存储库。是的,该文件仍
hg克隆
,他们还会拉下那个大文件吗?我知道它不会出现在他们的工作目录中,因为它被删除了,但该文件仍然会被拉下来并存储在Mercurial内部存储中吗
我想确保人们不必拆下文件。我了解到真正大的文件应该存储在Mercurial之外,所以我删除了该文件。但我想知道人们是否仍会删除这个大文件——在这种情况下,我想我会从头开始重新创建存储库。是的,该文件仍在历史记录中。如果您想完全删除它,您需要使用Mercurial队列-请参阅Mercurial wiki上的
请记住,这会随着修订ID的更改而中断克隆。当然,它仍将位于存储库中 您可以随时更新回旧版本,如果您更新回提交文件时获得的版本,它将在那里焕然一新 有两种方法可以缓解此问题(当您正在提交时,而不是现在):
- 大文件扩展名之一,本质上是将大文件添加到辅助存储库,并将二者链接起来,这样,如果您更新到一个不存在该文件的修订版,并且您还没有该文件,它将不会得到更新。这更像是一种“随需应变”的拉动方式
- 如果文件从未更改,请在网络上保持可用,只需创建指向该文件的某种链接,而不是完整副本
- 去掉添加文件的变更集,以及它之后的所有变更集。您可以使用Mercurial队列扩展来实现这一点。请注意,您需要在所有克隆中执行此剥离。如果只有一个用户将历史记录中包含该文件的存储库推回中心克隆,则更改集将返回
- 手动从头开始重建存储库
- 使用
命令和一些过滤,可以使用hg convert
选项进行此操作--filemap
- 保持原样。它有多大,会是个大问题吗
请注意,手动或通过
hg convert
重建存储库将使所有克隆无效。任何试图从旧克隆推送到新中心克隆的人都会收到一条关于无关存储库的消息。如果您的任何用户都不够聪明,没有意识到强制推送是一个坏主意,那么这种方法会有问题。您是hg rm
该文件还是删除了它?