0

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

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

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

请帮我!!谢谢

4

2 回答 2

0

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

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

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

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

于 2013-04-17T15:23:39.943 回答
0

如果您考虑数据库演变的版本控制,而不是数据库中的数据,您必须阅读有关Liquibase和使用数据库更改日志文件发布数据库更改的信息。

简短介绍:

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