mercurial - 每次在生产服务器上更新 Mercurial 分支时是否都必须 merge 并提交?

标签 mercurial merge dvcs commit

我在最近的项目中使用 Mercurial。在我部署项目的网络服务器上,我的配置文件与生产设置略有不同。问题是当我拉动更新时,我经常还必须 merge 提交

这是正确的工作流程吗?似乎很奇怪,为了能够继续更新,我必须提交变更集,我认为 merge 会将它们集成到我的生产分支中,并在每次更新时继续这样做。这是我还不习惯的分布式版本控制范例吗?

最佳答案

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

这意味着在服务器上手动上传并更改它们,但无需不断 merge 。它还使数据库密码等内容不受版本控制,这可能是一件好事。

例如,当我使用 Django 应用程序时,我会 checkin 一个 settings.py 文件,其中包含:

  • 所有在服务器之间不会发生变化的设置(站点名称、安装的 Django 应用等)。
  • 用于本地开发的“服务器特定”设置(数据库位置等)。
  • 末尾的 from deploy import * 行。

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

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

这个特定的方案适用于 Django 项目,但也许类似的想法适合您。

关于mercurial - 每次在生产服务器上更新 Mercurial 分支时是否都必须 merge 并提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830303/

相关文章:

c - 为什么我在大输入时遇到 scanf 的段错误

Git 从当前 checkout 的 master 创建分支?

r - 根据行名匹配两个数据框并添加 NA

dvcs - 化石单片机 : Merge leafs back to trunk

git - 在 git 中,将多个注释格式化为单个提交有哪些好的约定

version-control - 如何使用 Mercurial 同步同一工具的封闭版本和开源版本?

mercurial - 强制 Mercurial 始终使用 --subrepos

git - 将 Mercurial 存储库推送到 Git 存储库时出现 "abort: No module named selectors!"

mercurial - 在 mercurial 的分支之间区分单个文件

Git merge 测试分支(最终提交)到 master 分支