强制创建Mercurial远程头(即分支)是个坏主意?

强制创建Mercurial远程头(即分支)是个坏主意?,mercurial,branch,Mercurial,Branch,我正在开发一个集中式web应用程序,我有一个集中式Mercurial存储库 在本地,我在存储库中创建了一个分支 hg branch my_branch 然后我做了一些改变并承诺。然后当我试着推的时候,我会 abort: push creates new remote branch 'my_branch'! (did you forget to merge? use push -f to force) 我刚刚用了push-f。这不好吗?我希望在我的中央远程存储库中有多个分支,因为我希望1)备份

我正在开发一个集中式web应用程序,我有一个集中式Mercurial存储库

在本地,我在存储库中创建了一个分支

hg branch my_branch
然后我做了一些改变并承诺。然后当我试着推的时候,我会

abort: push creates new remote branch 'my_branch'!
(did you forget to merge? use push -f to force)
我刚刚用了push-f。这不好吗?我希望在我的中央远程存储库中有多个分支,因为我希望1)备份我的工作,2)允许其他开发人员在该分支上与我一起开发

在我的远程存储库中有分支是不是很糟糕?我应该不做push-f(如果不是,我该怎么做?)?为什么Joel在他的教程中这么说:


(来源:)


偶尔我会在一个分支中进行更改,推送,切换到另一个分支,而我在切换到的分支中所做的更改会神秘地从几个提交前恢复到以前的版本。也许这是一种强迫推的症状?

我怀疑其他人有更多的时间可以回答得更好,但我发现了一些相关的问题:

它与一个不同的选项相关(特别是打破push-f),但它提到了一些与您所问内容大致相同的内容:

如果你要创建新的头,一个简单的“hg推送”会警告你,但这只是客户端的一个警告,旨在帮助/提醒用户他们可能忘记了先合并

假设这是一个准确的陈述,那么你这样做是完全安全的


但是请注意,我只掌握Mercurial的基本知识,因此不应将其作为完整事实的来源:)。

不,在创建新分支时强制执行也不错。发出错误/警告是因为新分支导致存储库具有两个拓扑头。也就是说,现在有两个没有子级的变更集:默认分支的尖端和新分支的尖端

使用Mercurial 1.6(两周后发布),您将能够

hg push --new-branch

允许创建新的远程分支。这更安全,因为
--force
禁用所有安全防护,而
--new branch
只允许您创建一个新分支。

检查创建新的远程命名分支没有问题,但为给定的命名分支设置多个头部是不好的(这是Joel警告的)。我认为最近的hg不再需要-f了。因为它在文档中提到了您引用的内容,所以对我来说,使用push-f和远程分支是可以确定的。很高兴知道。谢谢你的发帖。