水星错误。不在根下

Jos*_*sto 5 version-control mercurial

尝试将文件添加到Mercurial存储库时出现以下错误。

abort: /HRTRL/img not under root
Run Code Online (Sandbox Code Playgroud)

当开发人员决定忽略我们的正常工作流程并直接对生产服务器进行更改,而不是在其工作目录中进行更改,然后将其推送到测试存储库时,此操作就开始了。然后,我需要将测试仓库与他的更改同步,所以最终要做的就是将他的更改复制到当前的工作目录中,然后推送到中央存储库。复制和删除文件时,我没有使用mercurial。现在,我的目录中有未跟踪的文件,想添加它们以便提交。我最终遇到上述错误。

这是hg status的输出

! HRTRL/css/grid.css
! HRTRL/css/ie.css
! HRTRL/css/ie7.css
! HRTRL/css/jquery.lightbox-0.5.css
! HRTRL/css/layout.css
! HRTRL/css/productPages.css
! HRTRL/css/reset.css
! HRTRL/css/typography.css
? HRTRL/img/webheadercenter.jpg
? HRTRL/img/webheaderleft.jpg
? HRTRL/img/webheaderright.jpg
? HRTRL/includes/CallLog/tests/all_tests.php
? HRTRL/includes/CallLog/views/index.php
? HRTRL/includes/CallLog/views/styles/style.css
Run Code Online (Sandbox Code Playgroud)

ang*_*son 2

如果你想:

  • 所有具有状态的文件!(文件在存储库中被跟踪,但在磁盘上丢失),将被删除
  • 所有状态为?(文件未知)的,待添加

然后你可以简单地发出以下命令:

hg addremove --similarity 90
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您可以删除该--similarity 90部分,但如果您离开,它会尝试找出您是否已将某些丢失的文件重命名为添加的文件。

如果可以的话,我会尝试使用 TortoiseHg 进行添加删除,因为它还可以进行相似性检查以查看您是否复制了文件,这可能会使这些文件的历史记录更加正确,如果它们是来自现有文件的副本(并且仍然跟踪)文件。该addremove --similarity 90部分将仅检查重命名/移动,而不检查副本。


或者,如果您只需要部分文件,则可以手动执行。对于每个具有 status 的文件!,您可以发出以下命令:

hg remove --after X
Run Code Online (Sandbox Code Playgroud)

其中X是文件的路径和名称,例如:

hg remove --after HRTRL/css/grid.css
Run Code Online (Sandbox Code Playgroud)

然后对于?您想要添加的每个状态文件:

hg add X
Run Code Online (Sandbox Code Playgroud)

例子:

hg add HRTRL/img/webheadercenter.jpg
Run Code Online (Sandbox Code Playgroud)