Mercurial:重命名文件导致存储库中的内容重复?

9 mercurial

我昨天刚开始使用Mercurial(我没有太多的编程经验).我注意到,如果我重命名一个200MB的文件,理想情况下,存储库大小不应该改变,但我发现它增加了200MB.

这是Mercurial的错误/弱点吗?将来有可能修复/改进吗?


更新:

我刚刚在Windows 7 64bit上尝试过TortoiseGit 64bit版本.重命名文件时,它不会创建重复的内容.但似乎一旦我重命名了一个文件,它的历史就丢失了.


更新2:

请参阅下面的tonfa评论.来自Mercurial wiki - GSoC Ideas 2010:

项目创意

轻量级复制/重命名

(非常困难 - 一名成功的学生将成为Mercurial存储格式和传输协议的专家)

目前的复制和重命名效率不高.Mercurial将复制/重命名的源文件复制到其内部历史存储中的目标文件的新初始修订版.对于重命名,这尤其违反直觉,因为重命名大文件会使文件的大小增加存储.如果Mercurial有某种方式从新文件中引用现有修订版,同时保留向后兼容性和检索修订版的有限I/O保证,那会更好.有关讨论,请参见issue883.有从这个位于老企图的MQ 这里.

联系方式:mpm,tonfa,cyanite

zer*_*kms 7

不,这不是一个bug.在mercurial中重命名导致在旧位置删除文件并在新位置创建它(保留引用,但用于合并和日志记录).

所以至少现在你什么都不做.

  • @caveman:不,这个功能没有计划好(它会破坏其他优化以最小化磁盘访问) (3认同)
  • 穴居人:只需用Mercurial重命名并忽略现在的空间命中 - 当实施轻量级副本时,新克隆将再次变小. (2认同)