Syl*_*ain 2 workflow mercurial dvcs
我被指派为项目开发一个功能.我将在几周的时间内完成该功能几天.我将克隆中央回购.然后我要去当地工作3个星期.在这个过程中,我会多次将我的进展交给我的回购.当我完成后,我会在推动之前拉/合并/提交.
将我的功能作为单个变更集推送到中央仓库的正确方法是什么?我不想将14个"正在进行中的工作"变更集和1个"合并"变更集推送到中央仓库.我希望项目中的其他协作者只能看到一个带有重要提交消息的变更集(例如"已实现的功能ABC").
我是Mercurial和DVCS的新手,如果您认为我没有以正确的方式接近,请不要犹豫提供指导.
<My own answer>
到目前为止,我想出了一种方法,将15个变更集减少到2个变更集.假设变更集10到24是"正在进行中"变更集.我可以'hg collapse -r 10:24 -m "Implemented feature ABC"'(14个变更集合并为1).然后,我必须'hg pull'+ 'hg merge'+ 'hg commit -m "Merged with most recent changes"'.但现在我坚持使用2个变更集.我不能再'hg collapse',因为pull/merge/commit打破了我的变更集序列.当然,2个变更集比15个好,但是,我宁愿有1个变更集.
</My own answer>
这是一个重复的问题,(答案是你找到的CollapseExtension),但我会借此机会试着说服你.:)
很明显,我不是说你试图压缩你的变更集的地方,但你可能想要考虑版本控制的一半价值回答"为什么"而不仅仅是几个月和几年后的"什么".准确表示特征是如何产生的以及在哪些阶段可能具有未来价值.抛弃它似乎是......无法控制的.不要担心你的历史有多漂亮,而要关注它的实用性.
即使你崩溃了,你肯定应该推动两个变更集,功能和功能的合并.合并变更集是课程的标准,不可避免.它们有一些非常重要的信息,即它们的父母,并且通过保持合并细节超出功能细节,可以很容易地使您添加的某些功能可以轻松地移动到树中的其他位置.不要试图避免它们!
此外,你应该至少每晚推动机器上的一些回购,对吧?在服务器上设置只有您访问的开发克隆或其他东西.