【问题标题】:Mercurial: Renaming a file results in duplicate contents in repository?Mercurial:重命名文件会导致存储库中的内容重复?
【发布时间】:2011-05-08 01:05:20
【问题描述】:

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

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


更新:

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


更新 2:

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

项目构想

轻量级副本/重命名

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

目前不支持复制和重命名 效率太高。 Mercurial 复制 将源文件复制/重命名为新的 目标文件的初始版本 它的内部历史存储。为了 重命名,这尤其 违反直觉,如重命名一个大 文件通过文件的 尺寸。如果 Mercurial 会更好 有某种方式提到 新文件的现有修订, 同时向后保留 兼容性和有限的 I/O 保证检索修订。 请参阅issue883 进行讨论。 有一个来自旧尝试的 mq 这个位于here

联系方式:mpm, tonfa, cyanite

【问题讨论】:

  • 这个正在处理中,在 Mercurial wiki 和邮件列表中搜索 lwcopy。

标签: mercurial


【解决方案1】:

不,这不是错误。在 mercurial 中重命名会导致在旧位置删除文件并在新位置创建它(但保留引用,以用于合并和记录目的)。

所以至少现在你什么也做不了。

【讨论】:

  • 感谢您的回复。因此,每次我重命名文件或文件夹时,都会在存储库中创建重复的内容。这对我来说是个坏消息,因为我是那种喜欢重命名资源文件的人。我会试试 Git。
  • @caveman: 如果你重命名源代码 - 这不是一个大问题,但如果你保留 200MB 二进制文件... :-S
  • 穴居人:只需用 Mercurial 重命名并暂时忽略空间命中 -- 当实施轻量级副本时,新克隆将再次变小。
  • @Martin Geisler:这是个好消息!我从 Mercurial 切换到 Git 的唯一原因是重命名问题。现在我切换回 Mercurial :)
  • @caveman:不,这个功能没有计划(它会破坏其他优化以最小化磁盘访问)
猜你喜欢
  • 1970-01-01
  • 2013-07-30
  • 2012-08-24
  • 2020-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多