我们有一个有两个命名分支的仓库: dev和production 。 还有default分支,我们没有使用。 不幸的是,每当人们克隆版本库时,它会自动将它们置于default ,而且我们遇到了问题,因为人们会不经意地提交。
有没有办法删除default分支,或者禁用它,或者设置Mercurial以便克隆自动在dev分支上启动?
mercurial的文档有一些precommit钩子的例子,讽刺的是,检查分支名称。 在这个例子中,它会检查它是否与正则expression式匹配。 你可以调整它,以确保名称不是“默认”。
这可能不会阻止克隆从“默认”分支开始,但至less在这个钩子到位的情况下,没有人可以将任何代码放入“默认”。
这个答案已经过时了:你现在可以添加一个@书签和Mercurial 2.4,后来会自动检查出一个新的克隆。 尽pipe如此,你的用户必须小心保持@书签指向他们想要的分支头。
你不能让另一个分支成为default分支,我的意思是你不能告诉Mercurial你想要在新的克隆中检出branch-X 您应该始终使default分支用户要签出的分支。 这在wiki中有描述 。
人们有时会尝试删除default分支。 这可以通过不首先创build一个来完成:
$ hg init repo $ cd repo $ hg branch dev $ hg commit -m "Ha, no default branch!"
当没有default分支时, hg clone将会检出最尖端的变更集。 这是一个坏主意,因为每次将某些内容推送到存储库时,此更改集都会发生更改。 所以如果你在repo中有一个dev和prod分支,那么一个新的克隆会根据最后一次提交的地方检查一个“随机的”变更集。 更令人困惑的是,教导人们default意味着“你应该默认工作的正常分支”。
有没有什么理由不能在默认情况下进行你的开发,当它被发布到生产, 然后你分支到生产?
更新 :给你的请求,你有没有尝试明确命名分支在你的命令?