问题描述
|
在我的存储库中,我为正在使用的模块添加了几个子存储库。我总是将这些子仓库视为“仅拉动”。我不打算对其进行任何更改,但希望保留在发布新版本时轻松进行新更改的功能。
当我推送主存储库时,Mercurial尝试推送子存储库。有什么设置可以防止这种情况发生吗?
解决方法
您可以根据自己的行为来做几件事。
您实际上是在子存储库中进行编辑和提交吗?如果是这样,您应该创建一个单独的类似于供应商分支的存储库,在其中将您的更改与上游(“它们的”)更改合并,并让您的子存储库指向该更改。大概是这样的:
repos
main
subrepo
.hgsub # contains: \"subrepo=../theirproject\"
theirproject # clone of remote,upstream repo
这样的想法是,子仓库条目不直接指向仅拉上游仓库,而是指向您自己的仓库,在其中您将更改与“他们的”合并
另一个选择是停止在子仓库中进行更改。如果没有更改,也没有提交,则push将立即通过该存储库。如果切换到该工作模式,则可以在hgrc文件的[ui]
部分中设置commitsubrepos = false
,以避免意外提交该存储库。
底线是,如果您要更改其中的内容,则需要提交它们(出于安全考虑!),如果您要提交它们,则如果将其推送给父对象,则将它们推送,因此只需控制将它们推到哪里,您就可以走了。
, 取决于您使用的是哪个客户。我使用的是tortoisehg,我发现右键单击该文件夹,然后在tortoisehg >>中选择文件>>忘记了,这就是全部。选择文件,您无需再费心。