目前我正在学习Ruby on Rails,并通过书籍《Agile Web Development with Rails》进行实践。我还决定尝试使用Mercurial,因为我已经了解了分布式源代码管理系统,并且它似乎是一个理想的选择。然而,为了防止硬盘出现问题,我仍然更喜欢将我的代码远程推送到我的Linux VPS。
所以,我的问题与Mercurial中的分支有关。目前我已经设置了一个远程存储库,可以轻松地通过SSH推送更改(甚至我还设置了一个Nginx FastCGI站点,让我也可以进行推送)。然而,我想做的是在每个章节上创建一个分支,这样我就可以保持对我的进度的有序历史记录。所以这就是我正在做的事情:
$ hg branch chapter-10 (完成第十章内容) $ hg commit -m "第十章完成" $ hg update default $ hg merge chapter-10 $ hg commit -m "将第十章合并到默认分支" $ 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方式”)的方法?老实说,我只希望存储库作为备份。我喜欢分布式源代码管理模型,但对我来说,强制推送感觉有点“不干净”。非常感谢您提供任何见解!