Mercurial错误。不是根

时间:2010-12-14 21:19:39

标签: version-control 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

1 个答案:

答案 0 :(得分: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