我有一个带有两个子仓库的仓库,像这样设置:

project/
   |-- folder1
   |-- folder2
   |-- www       [subrepo]
   |-- dev       [subrepo]


在机器A上,我已签出项目,www和dev,并已对.hgsub进行了修改。
我必须提交此命令,以使hg可以识别www和dev子存储库(commit -S等)。

但是,机器B仅使用项目的www功能,因此如下所示:

project/
   |-- folder1
   |-- folder2
   |-- www       [subrepo]


同样,机器B中的.hgsub仅具有www条目,而我必须将其提交给hg才能将其识别为子仓库。

我想做的就是推并拉到我的中央仓库,而不要推/拉.hgsub。
否则,如果我说出并从计算机A推送.hgsub,然后从计算机B提取,我会自动获得我不需要的dev子仓库以及www子仓库。

因此,我再次在计算机B上修改.hgsub以仅具有www并提交使其生效。
我在机器B的www子存储库中做了一些工作,并希望将其回退到中央存储库,但它也会将对.hgsub的更改推出。现在,当我拉上机器A时,我的“ dev”子存储库消失了,必须再次将其添加回.hgsub中,然后像这样来回移动,直到沮丧地拔出头发。

有什么办法可以解决这个问题? .hgsub必须在每台计算机上本地提交才能使子存储库正常工作,但是我不希望它们被推入或拉出。
是否存在用于推/拉的.hgignore?

干杯。

最佳答案

推/拉操作不适用于文件,而适用于变更集。

因此,无法推送/拉动部分变更集,无论是推送/拉取还是不这样做。

如果您不希望存储库始终包含该文件/子存储库,则不应像这样组织您的项目。相反,您可能要考虑建立一个仅包含该其他站点所需的子存储库的辅助项目。

换句话说,您可能会考虑有2个项目,一个项目包含所有子存储库,另一个项目只有几个。

09-03 23:57