【问题标题】:Storing Drupal SQL in Git在 Git 中存储 Drupal SQL
【发布时间】:2011-05-19 17:55:21
【问题描述】:

我有一个 drupal 站点,我将代码库存储在 git 存储库中。这似乎效果很好,但我也在对数据库进行更改。我正在考虑定期转储数据库并提交给 git。我对此有几个问题。

  1. 如果我覆盖文件,git 会认为它是一个全新的文件,还是会识别出它是同一文件的更改版本。

  2. 这是否会使我的 repo 变得巨大(数据库为 16mb)

  3. 我可以压缩这个文件吗?还是这会把 Git 搞得一团糟……压缩后的版本只有 3mb

  4. 还有其他建议吗?

【问题讨论】:

  • 您可能需要查看 Drupal Answers Beta 站点。使用它的人越多,它通过测试版的机会就越大:drupal.stackexchange.com

标签: sql database git drupal version-control


【解决方案1】:

如果您有足够的空间,源代码管理中的非压缩转储非常方便,因为您可以compare using a diff program 添加/修改/删除了哪些行。

【讨论】:

  • 只是作为一个更新 - 我试过了,将 sql 转储添加到 git(覆盖相同的文件)然后提交新文件。它似乎并没有增加 .git 的大小,所以我假设它实际上看到了这些变化......但是我不认为如果转储是 g-zip 压缩的,这将起作用
【解决方案2】:

另一个解决方案是使用功能模块,该模块应该在代码中捕获 drupal 配置。它将捕获的数据存储为一个功能模块,您可以将其放入版本控制中。

【讨论】:

    【解决方案3】:

    对于我的数据库应用程序,我将 DDL 语句的脚本(如 CREATE TABLE)存储在某种版本控制系统中。这些脚本有时也包括静态“种子”数据。我使用的所有版本控制系统都擅长识别这些文件中的差异,而且它们比包含数据的完整数据库要小得多。

    对于动态生成的数据,我将备份(例如来自mysqldump)存储在适当的位置(取决于数据的重要性,可能包括异地备份)。

    【讨论】:

    • “对于动态生成的数据,我将备份(例如来自 mysqldump)存储在适当的位置(取决于数据的重要性,可能包括异地备份)。” ...这是否意味着您正在拍摄数据的多个快照并将它们全部保存,或者覆盖同一个文件并使用 Git 对其进行版本控制?
    • 他的意思是:“转储总是在同一个文件中,还是每次都在文件夹中创建一个新文件?”。
    • 只是作为一个更新 - 我试过了,将 sql 转储添加到 git(覆盖相同的文件)然后提交新文件。它似乎并没有增加 .git 的大小,所以我假设它实际上看到了这些变化......但是我不认为如果转储是 g-zip 压缩的,这将起作用
    • @wild 他在我回复后编辑了他的评论。我保留了多个转储文件,并对那些“足够老”不再关心的转储文件进行了老化(足够老因应用程序而异)。
    【解决方案4】:

    1) 都是文本,所以 GIT 会像查看任何其他文件一样查看它。

    2) 不,由于上述原因,它应该向 repo 添加 16mb(或更少,由于 GIT 自身的压缩),它不会每次都添加新文件,只是更改,因此 repo 将更改添加到存储库的大小

    3) 不,否则 GIT 将无法看到差异 - GIT 无论如何都会自己压缩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2011-05-28
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多