我刚从SVN切换到Mercurial。我做了一些基本的东西(导入我的代码,进行提交,获取log / commit / revert /等等)并阅读一些关于分支/合并的教程。
我现在的问题是:使用Mercurial的最佳方式(“Mercurial”)是什么?“我不想遵循SVN范式;我想以”正确“的方式做事。
我应该提一下,我是大多数项目的唯一开发人员,而且我正在使用敏捷/ Scrum实践。也许我的问题应该是我应该克隆/分支每个功能吗?每个任务?我记得读过这应该是Git的情况,这允许你基本上保持多个副本同时工作和单独的功能与错误修复与任何(即保留你的工作副本)为你正在做的每件事分开。它显然也是Mercurial's best practices的一部分。
或者我可以保留一份副本,进行更改并大量提交。不管。
如果这个问题过于主观,我不介意关闭它,只要有人可以将我与如何最佳使用Mercurial的阅读材料联系起来。这就是我追求的目标。
答案 0 :(得分:8)
作为(大多数)独唱开发者,我想我的回答是......是的。当我知道我正在进行快速更改时,我会在我的“主要”开发目录中进行更改,但如果我对某些事情的复杂程度有任何疑问,我会在开始时进行分支。好的一点是,您可以以任何方式(以任何顺序)对您有效。如果你在一个长的mod上你的主开发目录工作,有人进来,现在需要快速修复,只需克隆主干,修复它,检查它,鲍勃是你的叔叔!
我带着悲伤回顾SCCS / RCS / CVS的日子。
我即将带领3名设计师进入应许之地。他们是老派,多年来一直在共享目录中使用Dreamweaver(恐怖!)。本周末,我们将他们带到XAMPP,TortiseHG,rsync和deve / staging / production的世界。
更新:我以极其暧昧的方式表达了我的回答。谢谢你给我打电话,迈克尔E.
我的“主要开发目录”实际上是生产主机的克隆。当我说“分支”时,我的意思是说我会在某种程度上工作一段时间,通常是几天到一个月或更长时间,但它仍然是“某事”的克隆。我知道这听起来很模糊,但有时我和其他开发人员一起工作,我们来回传递东西,我们只是不太担心合并到主干,直到进入分段。 (即便如此,它通常也很无痛。)
所以对我来说“快速解决”意味着将我的“主要”开发人员更新为主干,黑客攻击,测试,推送到主机(和测试),然后推送到生产(和测试)。大多数情况下,快速修复都是以匿名分支完成的。
BTW,对本地存储库进行克隆是如此之快,没有理由(在我看来)做任何其他事情。我有一个中等项目,有超过7,000个文件和4个开发人员近4年的每日提交 - 存储库大约200MB。克隆时间(在我车库的旧机器上)是10秒。我保留了远程制作大师的本地克隆,并用cron每小时取一次。 HTH。答案 1 :(得分:6)
基本指南: https://www.mercurial-scm.org/guide/
分支指南: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
我更喜欢shelving用于快速修复,anonymous branches用于两到三个变更集更改,以及克隆任何大于此的内容。
答案 2 :(得分:3)
答案 3 :(得分:2)
我发现命名分支比几个案例的克隆更可取。如果项目设置未检入源代码控制,则克隆需要我将这些设置复制到我的所有克隆。我的大部分工作都在Django,其中local_settings.py
没有源代码控制是一个常见的习惯用法。另外我发现共享克隆并不像共享命名分支那么容易。如果我是唯一从事某项功能的开发人员,那么克隆就可以了。第二个我需要有人帮助我建立一个名为分支的功能,这将是更好的选择。
@ k3b提到了gitflow,并且在开发中有一个hg插件在hg中使用命名分支执行相同的操作。 https://bitbucket.org/yinwm/hgflow/wiki/Home
答案 4 :(得分:1)
否即可。我将克隆功能分支的工作目录/存储库而不是分支。
我正在跟踪a-successful-git-branching-model中的极端谴责。
请注意,引用的文章适用于git而非hg。然而,分支模型是通用的,只是git和hg之间的语法不同。
[更新2013-01-31] 感谢@Alex的评论。我不知道differences between hg and git。是否有人有hg经验,可以验证git分支modell是否适用于hg或需要modificatoins来使用hg(激活命令行语法)?