每次我在生产服务器上更新Mercurial分支时,是否必须合并和提交?

Sov*_*iut 2 merge mercurial dvcs commit

我在最近的一个项目中使用Mercurial.在我正在部署项目的Web服务器上,我有一个略有不同的配置文件和生产设置.问题是,当我pullupdate我经常要mergecommit为好.

这是正确的工作流程吗?看起来奇怪的是,为了能够继续更新,我必须提交更改集,我想合并会将它们集成到我的生产分支中,并且每次更新时都会继续这样做.这是一个分布式版本控制范例我还不习惯吗?

Ste*_*osh 5

一种选择是将服务器特定的部署设置完全保留在版本控制存储库之外.

这意味着在服务器上手动上传和更改它们,但不需要经常合并.它还使数据库密码之类的东西不受版本控制,这可能是一件好事.

例如,当我在Django应用程序上工作时,我检查一个settings.py包含以下内容的文件:

  • 服务器之间不同的所有设置(站点名称,安装的Django应用程序等).
  • 用于本地开发的"特定于服务器"的设置(数据库位置等).
  • 最后一行from deploy import *.

from deploy import *行会拉入deploy.py文件中的所有项目(如果存在).在测试/暂存/生产服务器上,我将创建此文件并将特定于服务器的设置放入其中.因为导入发生在它们的末尾settings.py将覆盖主设置文件中的任何本地开发特定设置.

这样做意味着在本地运行和开发所需的所有内容都会被检入版本控制,但不会检入特定于服务器和/或敏感的信息(如密码)(因此永远不需要合并).它需要一些额外的工作来设置(添加导入行并deploy.py最初在服务器上创建文件).

这个特殊的方案适用于Django项目,但也许类似的想法对你有用.