Mercurial 在工作目录中将未修改的文件标记为已修改并且无法恢复

标签 mercurial dvcs tortoisehg

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

  • 关闭 eol 扩展并恢复文件,
  • 手动删除文件并从主修订版更新它们。

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

    最佳答案

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

    至于你看到的问题,来自 this series of emails ,看起来像 eol扩展使用 LF作为其默认存储库编码,这可能使 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
    

    关于Mercurial 在工作目录中将未修改的文件标记为已修改并且无法恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6464824/

    相关文章:

    mercurial - 使Mercurial在Windows中运行

    git - Hg-git 停止为多个分支工作

    version-control - 在 Mercurial 中使用多个远程位置进行推拉

    Git: merge 公共(public)和私有(private)分支,同时在两个分支中保持某些文件完好无损

    mercurial - 如何使 hg 忽略过滤器不区分大小写

    version-control - Mercurial Subrepos-如何创建它们以及它们如何工作?

    mercurial - 将最近的提交放在 Mercurial (Hg) 的单独(命名)分支中

    git - Mercurial 分支和 merge ,无需推送分支

    mercurial - 如何在 Mercurial .hgignore 中忽略 .bak 文件

    django - 如何使用 django 确保数据库更改可以轻松地通过 DVCS 移动