我们有一个存储库,其中包含两个命名分支:dev
和production
。还有一个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
有什么原因你不能只在默认环境中进行开发,而当它发布到生产环境时,你然后将其分支到生产?
更新:根据您的请求,您是否尝试过使用命名分支明确地在你的命令中?