版本控制 – Mercurial错误.不是根

尝试将文件添加到我的mercurial repo时,我收到以下错误.

abort: /HRTRL/img not under root

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

这是hg状态的输出

! 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

最佳答案 如果你想:

>所有有地位的人! (文件在存储库中跟踪,但在磁盘上丢失),要删除
>所有有地位的人? (文件未知),待添加

然后您只需发出以下命令:

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
点赞