35

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

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

4

3 回答 3

92

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

于 2012-05-31T21:22:59.970 回答
25

hg addremove如果默认情况下文件 100% 相似,将在事后检测重命名,并且可以用-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
于 2012-06-01T04:54:38.973 回答
14

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

于 2012-05-31T21:06:58.740 回答