这些测试文件在您的开发分支中不存在,因此当您签出开发分支时,它们不会在工作目录中。像 Mercurial 和 git 这样的 DVCS 不允许您在一个修订版/分支上签出一个目录,而在另一个修订版/分支上签出另一个目录。
您链接的答案是将更改的文件及其文件带到另一个分支,它们不是您要的。
所以你想做的方式(单独的分支)是行不通的,但是还有很多其他/更好的选择
一种选择是让您的测试成为由 mq(Mercurial Queues)存储库管理的补丁,该存储库本身可以进行版本控制。然后,当您在您的开发分支中并想要运行您要做的测试时:
hg qpush # tests show up
... run tests, edit tests ..
hg qrefresh # save the changes you made to the test
hg qpop # tests vanish again
MQ 功能强大,但有时有点难以理解。
另一种选择是使您的测试成为父存储库,而您的实际代码成为该父存储库的子存储库。您的磁盘布局如下所示:
parent/
tests/
existingrepo/ # <-- the repo you already have w/o tests
然后人们可以克隆,你可以推送现有的 repo 没有测试,但外部 repo 将包含一个指向它的指针,并且两者将同步进行版本控制。同样,有点棘手,但有一些不错的结果。
第三个选项,我的偏好是克服“保持我的提交井井有条,而不是让我的开发分支混乱”的心态。测试与主要代码一样重要,它们应该使用代码进行版本控制,它们不会使任何东西变得混乱,它们提供了有价值的工具来帮助理解代码在做什么。在方便时,您可以随时使用hg log --exclude tests/
查看排除它们的历史记录。
要冒险,只需执行以下操作:
hg update development
hg merge tests
你可以走了。