在我的存储库中,我为正在使用的模块添加了几个子存储库。我总是将这些子存储库视为“仅拉取”。我不打算对它们进行任何更改,但希望保留在发布新版本时轻松提取新更改的能力。
当我推送主存储库时,Mercurial 会尝试推送子存储库。有什么设置可以防止这种情况吗?
在我的存储库中,我为正在使用的模块添加了几个子存储库。我总是将这些子存储库视为“仅拉取”。我不打算对它们进行任何更改,但希望保留在发布新版本时轻松提取新更改的能力。
当我推送主存储库时,Mercurial 会尝试推送子存储库。有什么设置可以防止这种情况吗?
您可以执行一些操作,具体取决于您要查找的行为。
您实际上是否在子存储库中进行编辑和提交?如果是这样,您应该创建一个单独的类似供应商分支的存储库,在其中将您的更改与上游(“他们的”)更改合并,并让您的子存储库指向它。可能是这样的:
repos
main
subrepo
.hgsub # contains: "subrepo=../theirproject"
theirproject # clone of remote, upstream repo
这个想法是 subrepo 条目不直接指向仅拉取的上游 repo,而是指向您自己的一个,您将更改与“他们的”合并
另一种选择是停止在子存储库中进行更改。如果没有更改,也没有提交,那么 push 将通过该 repo。如果您切换到该工作模式,您可以在 hgrc 文件commitsubrepos = false
的[ui]
部分中设置 ,以避免在该 repo 中意外提交。
底线是,如果您要更改其中的内容,则需要提交它们(为了安全!),如果您提交它们,那么如果父项被推送,它们将被推送,因此只需控制它们的位置'重新推,你很高兴。
取决于您使用的 mercurial 客户端。我使用 tortoisehg,我发现右键单击文件夹并选择 tortoisehg >> forget 中的文件就可以了。选择文件,您无需再费心了。