现在我正在学习 Ruby on Rails,并且正在阅读《Agile Web Development with Rails》一书。我还决定尝试一下 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
执行推送语句后,我会从 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 模型的粉丝,但对我来说,强制推送感觉有点“肮脏”。任何见解都将不胜感激!提前致谢。
The push -f
是适合您的情况的正确选项,上个月进行了讨论,当此“push creates new remote branch
” 弹出警告:参见第1513期 https://bz.mercurial-scm.org/show_bug.cgi?id=1513.
然而,1974年刊 https://bz.mercurial-scm.org/show_bug.cgi?id=1974(本月)提到了一些不良影响(但不是你的情况)。
看到这个了解有关在远程存储库上创建第二个头的更多信息。
更一般地说,如果您并行编写章节,并且您只想在某个(稳定)时间点合并它们,则可以使用分支
但如果你的写作过程更加线性,你可以只使用一个分支,并沿途放置一些标签。
然而,如果您返回第 10 章并添加一些行,即使您已经放置了标签 11 和 12,这也会使历史记录变得更难阅读。所以在这种情况下分支仍然是一个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)