Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 已删除的文件是否仍使用hg克隆下载?_Mercurial_Delete File_Mercurial Bigfiles - Fatal编程技术网

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

Mercurial 已删除的文件是否仍使用hg克隆下载?,mercurial,delete-file,mercurial-bigfiles,Mercurial,Delete File,Mercurial Bigfiles,在我们的Mercurial回购协议中,我们添加了一个非常大的文件(并进行了hg推送),然后删除了这个大文件(并进行了另一次推送) 现在如果有人做了一个hg克隆,他们还会拉下那个大文件吗?我知道它不会出现在他们的工作目录中,因为它被删除了,但该文件仍然会被拉下来并存储在Mercurial内部存储中吗 我想确保人们不必拆下文件。我了解到真正大的文件应该存储在Mercurial之外,所以我删除了该文件。但我想知道人们是否仍会删除这个大文件——在这种情况下,我想我会从头开始重新创建存储库。是的,该文件仍

在我们的Mercurial回购协议中,我们添加了一个非常大的文件(并进行了hg推送),然后删除了这个大文件(并进行了另一次推送)

现在如果有人做了一个
hg克隆
,他们还会拉下那个大文件吗?我知道它不会出现在他们的工作目录中,因为它被删除了,但该文件仍然会被拉下来并存储在Mercurial内部存储中吗


我想确保人们不必拆下文件。我了解到真正大的文件应该存储在Mercurial之外,所以我删除了该文件。但我想知道人们是否仍会删除这个大文件——在这种情况下,我想我会从头开始重新创建存储库。

是的,该文件仍在历史记录中。如果您想完全删除它,您需要使用Mercurial队列-请参阅Mercurial wiki上的


请记住,这会随着修订ID的更改而中断克隆。

当然,它仍将位于存储库中

您可以随时更新回旧版本,如果您更新回提交文件时获得的版本,它将在那里焕然一新

有两种方法可以缓解此问题(当您正在提交时,而不是现在):

  • 大文件扩展名之一,本质上是将大文件添加到辅助存储库,并将二者链接起来,这样,如果您更新到一个不存在该文件的修订版,并且您还没有该文件,它将不会得到更新。这更像是一种“随需应变”的拉动方式
  • 如果文件从未更改,请在网络上保持可用,只需创建指向该文件的某种链接,而不是完整副本
现在,您有四种选择:

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

请注意,手动或通过
hg convert
重建存储库将使所有克隆无效。任何试图从旧克隆推送到新中心克隆的人都会收到一条关于
无关存储库的消息。如果您的任何用户都不够聪明,没有意识到强制推送是一个坏主意,那么这种方法会有问题。

您是
hg rm
该文件还是删除了它?