【问题标题】:Mercurial marks unmodified files as modified in working directory and fails to revertMercurial 在工作目录中将未修改的文件标记为已修改并且无法还原
【发布时间】:2011-09-21 19:56:50
【问题描述】:

我们的团队在 Windows 上使用 TortoisHg 2.0.5,有时在工作目录中刷新文件列表后(至少每天一次 :(( ) 显示未修改文件的列表已修改。手动比较不会显示任何更改代码,换行符也是相等的。还原这些“fantom”文件不会导致任何结果。我们有两种方法来处理这个问题:

  1. 关闭 eol 扩展并恢复文件,
  2. 手动删除文件并从头版本更新它们。

每天都这样做真的很烦人(每天两次...三次...),尤其是在大型变更集上!请帮助找出问题的原因。

【问题讨论】:

  • 你试过运行 hg diff 吗?输出是什么?

标签: mercurial dvcs tortoisehg


【解决方案1】:

第一个问题是,您是否只在 Windows 上工作,如果是,您确定需要 eol 扩展吗?

至于您看到的问题,从 this series of emails 看来,eol 扩展名使用 LF 作为其默认的 repository 编码,这可能让 Mercurial 认为是您创建的 -在 Windows 上,以 CRLF 结尾的文件已更改。要更改此设置,请将以下部分添加到您的 .hgeol 文件中:

[repository]
native = CRLF

我尝试了以下测试,类似于我链接中的测试(启用了eol 扩展):

> hg init eols
> cd eols
# used notepad++ to save a test file "foo" with Windows line endings (CRLF)
> hg commit -Am "added foo with CRLF"
> hg status
> echo [patterns] > .hgeol
> echo ** = native >> .hgeol
> hg status
  M foo       # spurious difference!
  ? .hgeol
> echo [repository] >> .hgeol
> echo native = CRLF >> .hgeol
> hg status
  ? .hgeol

【讨论】:

  • 您好,感谢您的邮件列表。除了我们只在 Windows 环境中工作外,我们的团队也面临同样的问题。自 Mercurial 存储库的第一次更新(克隆)以来,我们遇到了 Unix 行尾问题。 Visual Studio 表明很多文件都有 CR 行结尾。所以我们考虑过 Mercurial 将带有 Unix 行结尾的文件存储在存储库中,现在使用 eol 扩展名来处理这个问题。
  • 这个解决方案对你有帮助吗?
猜你喜欢
  • 2010-12-02
  • 1970-01-01
  • 2021-07-28
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多