【问题标题】:Telling Mercurial about the moved files after a major re-organization在重大重组后告诉 Mercurial 移动的文件
【发布时间】:2012-05-31 21:02:08
【问题描述】:

我们最近在工作时在我们的服务器上重新组织了一个非常杂乱无章的网站。本网站使用 Mercurial 进行版本控制。我们重新组织了一切。数以千计的文件。现在,当我执行hg status 时,它会显示大量由? 表示的新未跟踪文件和大量丢失文件,这些文件与未跟踪文件相同,由! 表示。

如何告诉 Mercurial 我们移动了这些文件?我知道我可以一个一个地做,但考虑到有成千上万个,这不是一个选择。

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    您可以使用hg mv --after 表示您已经移动了文件。

    【讨论】:

    • 另外,hg mv --after 可以使用通配符,因此如果将大量文件从一个目录移动到另一个目录,则可以使用一个命令进行处理。
    • 我如何检查这是否被正确记录? hg status 似乎没有显示重命名。
    【解决方案2】:

    如果文件默认 100% 相似,hg addremove 将在事后检测重命名,并且可以使用-s 覆盖相似度阈值。

    另外,如果使用 TortoiseHg,thg guess 将弹出一个对话框,您可以在其中使用滑块设置相似性并查看添加和删除文件之间的匹配结果,然后选择要记录为重命名的对。

    例子:

    C:\>hg init test
    C:\>cd test
    C:\test>echo >file1
    C:\test>echo ONE>file1
    C:\test>echo TWO>file2
    C:\test>hg ci -Am init
    adding file1
    adding file2
    
    C:\test>ren file1 file3
    C:\test>ren file2 file4
    C:\test>hg st
    ! file1
    ! file2
    ? file3
    ? file4
    
    C:\test>hg addrem
    removing file1
    removing file2
    adding file3
    adding file4
    recording removal of file1 as rename to file3 (100% similar)
    recording removal of file2 as rename to file4 (100% similar)
    
    C:\test>hg status -C   # -C shows file copies.
    A file3
      file1                # file3 copied from file1...
    A file4
      file2                # file 4 copied from file2...
    R file1
    R file2
    

    【讨论】:

    • 感谢Detecting Renames的TortoiseHg小费... +1
    【解决方案3】:

    使用hg addremove。您不能只是移动文件并期望 Mercurial 知道这一点 - 如果您要移动跟踪的文件,请使用 hg mv

    【讨论】:

    • +1。请注意,hg mv 强制 Mercurial 跟踪文件的历史记录,而使用 hg addremove 您会抑制文件移动/重命名的事实。
    • 重申一下:使用addremove,您会创建一个文件突然出现的情况,而实际上它没有重命名之前的历史记录。尝试坚持hg mv
    • @Helgi、@keykeeper、hg addremove 将在事后检测重命名。看我的回答。
    • @MarkTolonen:很好,你解释了,谢谢。不过,根据我的经验,这种“重组”通常意味着对许多重命名的文件进行修改。
    • 请查看 Steve Losh 的帖子:Addremove Can Track Renames But Won’t Unless You Ask It Really Nicely。看起来您必须使用明确的 similarity 选项:hg addremove --similarity 100
    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多