使用Mercurial SCM进行分支
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Mercurial SCM进行分支相关的知识,希望对你有一定的参考价值。
所以现在我正在学习Ruby on Rails,我正在阅读“使用Rails进行敏捷Web开发”一书。我还决定要给Mercurial一个机会,因为我已经阅读了分布式SCM,这似乎是一个理想的情况。但是,我仍然喜欢将我的代码远程推送到我的Linux VPS,只是因为我的硬盘驱动器决定进行潜水。
所以,我的问题是专门针对Mercurial中的分支。现在我已经设置了一个远程存储库,我可以轻松地通过SSH推送更改(我甚至设置了一个nginx FastCGI站点,让我也可以推送)。然而,我想要做的是为每个章节创建分支,因为我可以通过这本书来处理我的进度。所以这就是我正在做的事情:
$ hg branch chapter-10 (do chapter 10 stuff) $ hg commit -m "Chapter 10 complete" $ hg update default $ hg merge chapter-10 $ hg commit -m "Merging chapter 10 into default" $ hg push
一旦我执行了push语句,我从Mercurial得到这条消息:
pushing to ssh://myserver/hg/depot searching for changes abort: push creates new remote branch 'chapter-10'! (did you forget to merge? use push -f to force)
所以在这一点上我尝试再次做一个hg merge
,它告诉我没有什么可以合并,这显然是正确的,因为我刚刚合并它。当我用-f强制推送时,一切看起来都很好,甚至Web界面都显示了相应的分支。
总而言之,我的问题很简单:我这样做是正确的吗?有没有更合适的方法来使用Mercurial(即“Mercurial方式”)?老实说,我只是希望存储库充当备份。我是分布式SCM模型的粉丝,但对我来说,强迫推动感觉有点“脏”。非常感谢任何见解!提前致谢。
push -f
是你的情况的正确选择,上个月有一个讨论,当这个“push creates new remote branch
”警告弹出时添加该命令:请参阅issue 1513。
然而,issue 1974(本月)提到了一些不良影响(虽然不是你的情况)。 请参阅此translated article以了解有关在远程仓库上创建第二个头的更多信息。
更一般的观点是,如果您并行编写章节,则可以使用分支,并且只想在某个(稳定)时间点合并它们
但是如果你的写作过程更加线性,那么你只能使用一个分支,并在此过程中添加一些标记。 但是,如果你回到第10章并添加一些行,即使你已经放置了标签11和12,这将使历史记录更难阅读。因此,在这种情况下,分支仍然是一个好主意。
我不知道你的具体问题,但从你的评论看来,你似乎使用了你可能想要使用标签的分支。
分支通常在多个人在同一个项目上合作时使用,并且您希望创建工作分离,这样一个人可以处理稳定的代码,而另一个人会做一些临时破坏功能的实验。或者,分支用于稳定释放,而发展在干线中进行。
标签(或标签)主要用于创建表示代码版本重要性的标记。例如,如果您想标记第10章的完成,您只需使用“chapter-10”标记标记所有当前版本。没有必要分支。如果出于某种原因需要,您可以在将来的任何时候从标记版本进行分支。
在这种情况下,我觉得使用-f进行推送是完全可以的。它只是创造了新的分支,而不是头脑。创建远程头是另一回事。
以上是关于使用Mercurial SCM进行分支的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用bazaar,mercurial或git进行部分克隆/分支?