【问题标题】:mercurial automated deployment on staging and production server using bitbucket使用 bitbucket 在登台和生产服务器上进行 mercurial 自动化部署
【发布时间】:2013-04-17 05:45:08
【问题描述】:

目前我们使用 mercurial 和 tortoise HG 的 GUI 来管理存储库,我们的存储库是在 bitbucket 上创建的。

现在我想将我的源代码部署到我的(暂存/测试)和生产服务器。我也用谷歌搜索过,但没有找到任何好的答案。

我也喜欢用 mercurial 管理我的 sql 数据库。是否可以制作我们的数据库版本?

请帮帮我!! 谢谢

【问题讨论】:

    标签: php mercurial tortoisehg bitbucket


    【解决方案1】:

    如果您考虑数据库演变的版本控制,而不是数据库中的数据,您必须阅读Liquibase 并使用database changelog file 发布数据库更改。

    简介:

    • 架构中的每个更改(创建数据库也是强制性的零级更改)由 Liqubase 存储为更改日志
    • 变更日志与变更集一起存储,它引入了此变更(添加到以前的变更日志集中)
    • 将项目从状态 A 更新到状态 B 假定将 A::B 范围内的所有变更集应用于代码和这些变更集中的所有数据库变更日志

    【讨论】:

      【解决方案2】:

      您不能将数据库存储在存储库中,但可以导出数据库。
      您可以使用命令行 (mysqldump) 或 MySQL 数据库管理器导出数据库。但我建议编写一个命令行脚本,它会自动为您执行此操作(因为多次编写该命令很烦人)。

      Here 是一篇关于将 mysql 数据库与 git(包含自动脚本)同步的文章,应该会对您有所帮助。为 HG 重写这些脚本应该不难。

      当你推送代码时,它只会被推送到 bitbucket 服务器。如果您希望您的服务器(或开发人员、测试或其他)获取代码,您需要从服务器中提取代码(使用命令行命令 hg pull 或在您的 GUI 中使用“拉”按钮 - 谷歌应该帮助你找到它)。您的服务器无法自动执行此操作,因为它会带来安全问题。 (如果有人可以访问开发人员帐户并且如果他推送一些代码会发生什么情况,这会做坏事,例如将客户的数据推送到另一台服务器?以及“数据库”部分。您应该只将结构保存在您的存储库中,不是用户数据等)。

      好吧,您应该只使用命令行(或 FTP 客户端或其他)在您的(测试)服务器上应用您的代码,因为:运行的脚本需要重新启动属性,或者如果您使用 PHP 服务器,添加新表时,您的数据库可能需要更新)。

      【讨论】:

      • “我想将我的源代码部署到我的(暂存/测试)和生产服务器”这意味着...我有 2 台服务器,第 1 台用于测试人员和开发人员的测试,第 2 台已经上线,我想将我的代码从 bitbucket 或 mercurial 推送到我的测试以及实时服务器。
      猜你喜欢
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多