2012-07-11 51 views
0

我们最近决定开始使用SCM软件(是的,我们可能应该有很久以前),我们决定尝试Mercurial。从我所能找到的它可以比Git更好地发挥w/Windows。我们也正在计划使用TortoiseHG而不是命令行,因为这是我们更熟悉的。我的学习还很早,我有一个问题,我一直在找到相互矛盾的答案。Mercurial&web sites:何时分支,何时克隆?

我们有一个apache服务的PHP站点。我们计划将每个开发人员的工作副本放在不同的端口上,直到将来我们可以正确虚拟化服务器(每个开发人员一个)时。我们希望为“稳定”构建留下一个分支/标签/东西,同时继续新的开发。当然,无论何时出现错误修正,我们都希望立即推送,但我们也想将它合并到开发分支中。

我从一些人那里听说我们应该克隆回购,在克隆中做我们的改变,然后在完成时合并回去。

我也听说过我们应该只使用分支,并在完成时重新合并分支。

在存储库的情况下,你怎么做关于Apache?这将是一个痛苦,必须重新配置它指向一个不同的目录,每当你添加新的功能...

感谢任何光线,你们可以照耀在此。我感谢帮助!

我们如何去做这件事?

另外,关于HG,“搁置”和“补丁”是什么?双倍感谢。

+0

每个开发者都有自己的clonned副本(甚至几个),他们推更改回中央存储库。 “每次添加新功能时必须将其重新配置为指向不同的目录是一件痛苦的事情......”---您可以从“每个用户的目录”开始,并在将来使用一些自动脚本 – zerkms 2012-07-11 02:26:10

+0

是的,我知道那一部分。我们计划让每个开发人员的工作目录,我们每个人都会在apache中获得一个端口(一个用户2112,另一个用户2113等),我和Rush粉丝一起工作。但我的克隆库的理解是,让另一个目录在你自己的工作文件夹,因此我需要从重新指向我的Apache /胡说/ doomaniac /到/胡说/ doomaniac不稳定/或什么? – DOOManiac 2012-07-11 02:29:38

+1

“但我对克隆存储库的理解”---您可能需要学习mercurial基础知识,并尝试使用它。现在你计划你的工作,但仍然困惑如何你选择工作 – zerkms 2012-07-11 02:57:36

回答

1

distributed revision control system中,没有中央服务器,每个“克隆”都有整个存储库的副本。在本地回购中进行更改,随后将更改集推送到其他更改集(或从中取出)。所以,实际上每个克隆都是一个分支,每个“提交”都是一个合并。

我会建议一个下面的工作流程的例子。关于我写的东西的更深入的解释,请参阅​​(编辑:实际上我的意思是this one,关于发布管理,但另一个也是有用的...)和this short Mercurial overview

假设您有一个“主”存储库,它将包含所有开发人员的所有最新信息。您可以克隆它(一次)并创建一个“生产”存储库。之后,将其更新到最新的稳定版本(应该使用标签标记)。

您也可以为每个开发人员再次克隆它(重申:您只克隆一次),并让它们彼此独立工作。他们可以随意提交(因为提交只会影响本地存储库),理想情况下应该只在他们稳定时将更改设置推送到“主要”。他们也可以从其他开发人员那里获得变更集,但他们是否立即执行合并。当“主”具有稳定的版本时,它应该被标记为这样并且“生产”可以拉到并更新到该版本。

如果在生产版本中发现错误,任何开发人员都可以:a)提交(或搁置)其当前工作目录; b)更新他们的工作目录到同一修订版“生产”正在运行; c)修复错误,提交并推送更改; d)再次更新到他离开的地方并继续正常工作。新的变更集可用于“生产”进行提取和更新,也可供每个开发人员将其合并到当前的修订中。

至于事情是具体到每一个工作拷贝(端口号,数据库实例,等等),你应该将它们存储在一个单独的配置文件,这个文件被忽略我的水银。这样,即使在更改版本时,这些值对于每个开发人员和生产实例也会保持不变。

+0

我读的工具hginit.com(http://hginit.com/05.html)和大约一半下来,这就是乔尔谈论如何制作存储库克隆(这两者都是开发人员)编写新功能,然后合并回自己的回购。 (这是后来推到其他回购)。这就是我在谈论克隆时的意思。这是一个理智的事情,还是分支更好?感谢所有的链接,我一定会阅读它们。 (对不起,在回复之前没有阅读它们;已经很晚了,我要睡觉了) – DOOManiac 2012-07-11 04:23:04

+0

没问题!但是,我不能给你一个简短的答案。我提供的链接试图做到这一点:解释每个工具背后的**推理**。许多工作流程都可以工作,而你对我来说似乎很好。需要注意的重要一点是,您经常不需要**克隆(如在“hg clone”中),并且如果您的设置需要每个开发人员的固定目录,那么这是您需要执行的唯一克隆。你需要推/拉/更新频繁,而是和TortoiseHg有很大帮助来组织(工作台工具显示叉和合并的一个漂亮的图形,突出了标记修订记录等)。 – mgibsonbr 2012-07-11 04:57:33

+0

太棒了,谢谢! – DOOManiac 2012-07-11 13:19:07