0

我们最近决定开始使用 SCM 软件(是的,我们可能很久以前就应该使用)并且我们决定尝试 Mercurial。据我所知,它在 Windows 上的播放效果应该比 Git 好。我们还计划使用 TortoiseHG 代替命令行,因为这是我们更习惯的方式。我的学习还很早,我有一个问题,我一直在寻找相互矛盾的答案。

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

我从一些人那里听说我们应该克隆 repo,在克隆中进行更改,然后在完成后将其合并回来。

我还听说我们应该只使用分支,并在完成后将分支合并回来。

在存储库的情况下,你对 apache 做了什么?每次添加新功能时都必须重新配置它以指向不同的目录会很痛苦......

感谢你们可以照亮这一切。感谢您的帮助!

我们该怎么做呢?

[编辑] 另外,关于 HG,什么是“搁置”和“补丁”?双重感谢。

4

1 回答 1

1

分布式版本控制系统中,没有中央服务器,每个“克隆”都有整个存储库的副本。在本地 repo 中进行更改,然后将更改集推送到其他更改集(或从它们中提取)。因此,实际上每个克隆都是一个分支,每个“提交”都是一个合并。

我将在下面提出一个工作流程示例。有关我所写内容的更深入解释,请参阅这篇文章编辑:实际上我的意思是这篇文章,关于发布管理,但另一篇也很有用......)和这个简短的 Mercurial 概述

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

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

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

至于每个工作副本的特定内容(端口号、数据库实例等),您应该将它们存储在单独的配置文件中,并让我的 Mercurial.xml 忽略该文件。这样,即使在更改版本时,这些值对于每个开发人员和生产实例都将保持不变。

于 2012-07-11T02:48:32.653 回答