使用Mercurial(hg)跟踪更改并自动同步?

| 首先,我一直盯着一页又一页的解决方案,但似乎没有一个适合我的情况。 我在全国各地都有使用Windows工作站和Eclipse的Web开发人员。我们认为DVCS最适合我们,因为集中式系统无法正常工作(Serena:缓慢的网络连接会永远需要签入...他们没有这样做,因为它不是“简化的”,等等。) 我们使用Eclipse来编辑和修改处于不同状态的开发服务器上的文件。 (大多数DVCS方案都假设您在工作站上安装了Web服务器,或者正在执行二进制可执行文件开发。) 我想尝试的是拥有一个本地存储库以供开发人员更改和“功能发挥”,但会自动使开发存储库保持最新。我曾想过使用Mercurial挂钩自动拉/更新/合并/推,但这要求开发人员在每次要测试更改时都进行提交。 (以触发钩子将他们的文件上传到开发服务器。)理想的情况是在保存文件时自动发生这种情况,因为培训人们使用版本控制已经是一个问题了(主要是因为它WAN和虚拟位置当前的PITA变慢。无法升级WAN。) 我的猜测是,我将不得不设置Unison或其他方法来使开发人员的存储库同步到开发服务器,就像它是本地副本一样,并且当然可以与其他开发人员同步。我试图找出是否有人简化/简单的解决方案可以使所有开发人员保持最新状态,同时允许他们随意进行版本控制。     
已邀请:
这就是分支的目的。拥有一个名为“不稳定”的分支,并使用一个存储库来设置开发服务器,该存储库会在提交/合并时自动更新到该分支(通过挂钩)。各个开发人员可以自由地在功能分支上工作并在本地提交。当准备好共享某些内容时,开发人员会将其更改合并到“不稳定”分支中,并将该分支推送到开发服务器/存储库。 我以这种方式管理我的部署。我的Web服务器虚拟主机Web根指向Mercurial存储库/工作副本。准备好出门时,我将其合并到\“ stable \”分支中,然后将\“ stable \”推送到服务器。存储库挂钩使用新更改来更新虚拟主机上的文件。
[hooks]
changegroup = /usr/bin/hg update stable >&2
我只做了一个月左右的时间,但它一直在发挥作用。 另外,请在检出哈德森/詹金斯时+1。您正在寻找的是“连续集成”(CI),Hudson和Jenkins做到了。 如果您不能在所有工作站上都​​拥有开发服务器,那么也许可以将Test Driven Development与某种适用于您的语言的单元测试框架一起使用-其中大多数不需要完整的服务器实现就可以编写并测试您的代码。这将需要对范例进行更改,但是您肯定会从中获得更好的代码质量。     
我们对水银非常满意,但我们不得不改变习惯...这花费了一些时间 每个开发人员现在都在本地拥有一个测试平台。通过分支进行提交,并且在本地验证测试之前不会推送任何内容 然后,哈德森是我们的朋友。为了整合团队工作,每次提交都会生成一个测试应用程序完整性的构建。红色表示回滚并返回到开发人员。绿色很酷 开发人员在这里提交“明智的”代码,并由团队将其集成到中央仓库中。他们必须决定何时该推送。没有同步的任务可以使他们摆脱这种负担。当我看到所有可能发生的错误时,即使每个推入选择都是由人自愿做出的,我也无法想象是否每个保存的文件都自动发生了更改 Mercurial的良好经验...     
您说要拥有用于开发人员更改的本地存储库,但会自动将所有更改推送到服务器。如果您不能使用本地开发环境来测试变更,那么拥有本地开发分支的意义何在?如果您的测试必须在开发服务器上完成,那么我想不出办法允许本地存储库中的“功能发挥”,同时在开发服务器上保持任何健全性。 在这种情况下,最好的选择可能是在开发服务器上分支,并让服务器检出不同的分支以测试不同的功能(hg update -C feature-blah)。服务器存储库的默认状态应为主要\“ devel \”分支的签出(hg update -C devel),并且当任何功能或错误修正分支被验证为可以正常工作时,它们会合并回到\“ devel \”,服务器的存储库由此更新。 编辑以明确说明:您的开发人员将从\“ devel \”或从功能分支签出到其本地计算机。然后,他们将进行任何编辑并将其推回服务器,然后将服务器的活动分支切换到新更新的代码。 另外,我从您的其他评论中假设,只有一个开发服务器,并且一次只能运行一个版本的代码。如果不是这种情况,我的回答根本没有任何意义。     

要回复问题请先登录注册