如何处理 Mercurial 中的默认分支?

如何处理 Mercurial 中的默认分支?

我们有一个存储库,其中包含两个命名分支:devproduction。还有一个default分支,我们没有使用。不幸的是,每当有人克隆存储库时,它都会自动将其放在上default,而我们遇到了问题,因为人们会无意中提交到它。

有没有办法删除default分支,或禁用它,或设置 Mercurial 以便克隆自动在dev分支上启动?

答案1

mercurial 文档有一些预提交钩子的示例,具有讽刺意味的是,其中一个正在检查分支名称。在示例中,它检查以确保其与正则表达式匹配。您可以对其进行调整以确保名称不是“默认”。

这可能无法阻止克隆从“默认”分支启动,但至少有了这个钩子,就没有人可以将任何代码放入“默认”中。

答案2

这个答案已经过时了:你现在可以添加@书签,Mercurial 2.4 及更高版本会自动检查是否有新的克隆。不过,你的用户必须小心,让@书签指向他们想要的分支头。


您不能将另一个分支设为分支default,我的意思是您不能告诉 Mercurial 您希望branch-X在新的克隆中签出。您应该始终将default分支设为用户想要签出的分支。这是在 wiki 中有描述

人们有时会尝试删除default分支。可以通过首先不创建分支来实现:

$ hg init repo
$ cd repo
$ hg branch dev
$ hg commit -m "Ha, no default branch!"

当没有default分支时,hg clone将签出最顶端的变更集。这是一个馊主意因为每次将内容推送到存储库时,此变更集都会发生变化。因此,如果您在存储库中有一个dev分支,那么新的克隆将根据上次提交的位置签出“随机”变更集。这比教人们这意味着“您应该默认工作的正常分支”prod更令人困惑。default

答案3

有什么原因你不能只在默认环境中进行开发,而当它发布到生产环境时,你然后将其分支到生产?

更新:根据您的请求,您是否尝试过使用命名分支明确地在你的命令中?

相关内容