来自Mercurial wiki - 2010年GSoC理念
项目理念 轻量级副本/重命名 (非常困难--一个成功的学生将成为Mercurial存储格式和传输协议方面的专家) 副本和重命名当前并不太有效。Mercurial将复制/重命名的源文件复制到目标文件的内部历史存储中的新的初始修订版。对于重命名,这是特别违反直觉,因为重命名一个大文件增长存储的文件的大小。如果Mercurial有某种方式引用新文件中的现有修订本,同时保持向后可压缩性和检索修订的有限I/O保证,则会更好。有关讨论,请参见issue883。有一个来自于这个位置这里的旧尝试的mq。
对不起,如果这是一个明显的问题(我不擅长英语和编程)。我想知道,“轻量级复制”是什么意思?
这是否意味着:在实现此功能时,具有相同内容(相同哈希值不同文件名)的多个文件将只在存储库中存储一次(就像Git一样)?
更新:
谢谢大家的回答。Mercurial的开发人员之一- 扁豆也在这个答案的评论中回答了这个问题
穴居人:当实现轻量级拷贝时,两个具有相同内容(相同哈希值不同名称)的文件是否只在存储库中存储一次(就像Git一样)? tonfa:不,这个特性是没有计划的(它会破坏其他优化以最小化磁盘访问)
发布于 2011-05-11 05:33:26
现在,当您复制一个文件时,将在存储库中创建一个新文件,其中包含您刚刚复制的文件的压缩快照。其想法是设置它,以便副本以某种方式引用旧文件,然后在此基础上具有revlog条目,而不是必须拥有自己的快照来将revlog条目作为基础。
这将不像git的工作方式。以这种方式改变变化无常的工作方式是非常有趣的,也不是最简单的建议。
发布于 2011-05-11 05:29:01
我最好说,复制/重命名的文件不会存储比现在多两倍的空间,而只是指向相同的修订。
对于单独添加的具有相同内容的文件,不确定这是正确的。根据描述,它们将被视为完全独立的文件,并将占用2x空间。
https://stackoverflow.com/questions/5959642
复制相似问题