2010-12-14 66 views
4

试图将文件添加到我的mercurial repo时出现以下错误。水银错误。不在根目录下

abort: /HRTRL/img not under root 

这开始当开发人员在这里决定无视我们正常的工作流程,并直接更改了生产服务器,而不是让他们在自己的工作目录,然后将它们推到测试回购。然后我需要将测试回购与他的更改同步,所以我最终做的只是将他的更改复制到我的工作目录中,这是当前的,然后推送到中央存储库。复制和删除文件时,我没有使用mercurial。我现在在我的目录中有未跟踪的文件,并且想添加它们以便我可以提交。我结束了上面的错误。

这是汞状态

! 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 
+0

你试过了:'hg addremove -s 90'?或者为要添加的每个文件手动执行'hg add X',并为每个要删除的文件选择'hg remove -A X'? – 2010-12-14 21:26:50

+2

你在这里有符号链接吗?我发现这个:http://mercurial.selenic.com/bts/issue165 – 2010-12-14 21:36:17

回答

2

输出。如果你想:

  • 所有那些状态!(文件被跟踪的资源库,但丢失的磁盘上),要删除
  • 所有状态为?(文件未知),待添加

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

hg addremove --similarity 90 

可以,如果你想,放下--similarity 90的一部分,但如果你离开它会尝试找出如果您已经从一些更名为添加的文件缺少的。

如果可以,我会尝试使用TortoiseHg来执行addremove,因为它也可以执行相似性检查以查看您是否复制了这些文件,如果这些文件是从现有(并且仍在追踪)的文件。 addremove --similarity 90部分将仅检查重命名/移动,而不是副本。


或者,如果你只想要一些文件,你可以手动完成。对于每个文件的状态为!,您可以发出以下命令:

hg remove --after X 

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

hg remove --after HRTRL/css/grid.css 

,然后为每个添加你想要的状态?文件:

hg add X 

例如:

hg add HRTRL/img/webheadercenter.jpg 
+0

谢谢! addremove做了诀窍,但是hg add会产生该根错误。 – 2010-12-14 21:45:12