mercurial - 克隆后存储库中的文件,但没有历史记录

标签 mercurial history

我们不久前有一个从 Subversion 转换而来的 Mercurial 存储库,今天注意到存储库中的某些文件没有任何历史记录。

此行为的症状之一是 hg status 将文件报告为干净,而 hg log 报告同一文件没有更改集:

> hg clone [repo]
> hg st -c FileWithMissingHistory.cs

C  FileWithMissingHistory.cs

> hg blame FileWithMissingHistory.cs
FileWithMissingHistory.cs: no such file in rev [...]
> hg log FileWithMissingHistory.cs
> hg log FileWithMissingHistory.cs -f
abort: cannot follow nonexistent file: "FileWithMissingHistory.cs"

> hg log -v | grep FileWithMissingHistory.cs

[gives output, there arechangesets mentioning the file]

显然示例中的文件名已更改。我尝试过使用 hg verify,但此命令报告存储库正常。有没有人经历过这种情况?我们可以做些什么来让历史“复活”?将虚拟历史记录放在有问题的文件上是可以接受的,但不是最理想的。

编辑: 我做了更多调查,注意到“FileWithMissingHistory.cs”在修订版 238 中从另一个文件名(hg 复制 + 删除)重命名。如果我在该修订版中执行 hg update -r238 和 hg 登录文件,我不会得到任何历史。对原始文件执行 hg log 按预期报告历史记录,因此似乎历史记录在复制过程中以某种方式丢失(同样,使用 hg copy 重命名该文件,并且更改集清楚地表明该文件已被复制)。

最佳答案

听起来很奇怪,实际上不可能。我要尝试调试此问题的方法是更新到不同的修订版,并检查文件第一次出现在工作副本中的修订版。如果您以二分搜索方式执行此操作(类似于 bisect extension 的工作方式),您应该找到在几次更新后引入该文件的修订版。

这并不能解决问题,但可能有助于追踪其根源。

关于mercurial - 克隆后存储库中的文件,但没有历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4956804/

相关文章:

mercurial - 在 Mercurial 中指定编辑器

Mercurial:推荐使用哪个 addremove --similarity 默认值?

java - 为什么Java可以接受多个参数但只能返回一个对象?

linux - Linux 中的路径名查找?

programming-languages - 学习计算机和编程

Android - 在 Activity 之间导航时清除历史记录

architecture - 计算机类型

mercurial - 当尝试通过代理服务器连接时,Windows 版 TortoiseHg 显示 "SSL error: unknown protocol"

mercurial - 为什么 Mercurial 在推送数据之前不进行身份验证?

mercurial - 我可以在不进行完整克隆的情况下获取 mercurial 存储库的提示快照吗?