2011-05-19 59 views
6

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

  1. 如果我覆盖文件,将Git的认为这是一个全新的文件还是会认识到这是同一个文件的修改过的版本。

  2. 这是否会potentialy让我的回购巨大的(数据库为16MB)

  3. 我可以压缩这个文件?或将此混乱Git了...压缩版本只有3MB

  4. 其他建议?

+2

你可能想看看Drupal的答复测试版网站。使用它的人越多,它越有可能通过测试:http://drupal.stackexchange.com – 2011-05-19 18:01:20

+0

部首,谢谢Matt – user379468 2011-05-19 18:35:31

回答

5

如果你有足够的空间,在源代码控制非压缩转储是非常方便的,因为你可以compare using a diff program什么行被添加/修改/删除。

+1

就像更新 - 我试过了,将sql转储添加到git(覆盖相同的文件),然后提交新文件。它似乎并没有增加.git的大小,所以我假设它实际上看到了这些变化......但我不认为如果转储是g-zipped – user379468 2011-05-19 23:06:36

0

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

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

+0

“对于动态生成的数据,我将备份(例如来自mysqldump)存储在一个合适的位置(取决于数据的重要性,可能包括异地备份)。“ ......这是否意味着您正在拍摄数据的多个快照并将其全部保存,或覆盖同一文件并使用Gi​​t对其进行版本化? – user379468 2011-05-19 18:38:12

+0

@用户不确定你的评论意味着什么... – 2011-05-19 18:39:23

+0

他的意思是:“总是在同一个文件中存储转储文件,还是每次都在文件夹中创建一个新文件?”。 – wildpeaks 2011-05-19 20:45:35

1

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

0

1)这是全部文本,所以GIT会像其他文件一样看到它。

2)不是,由于上面它应该增加16mb到回购(或更少,由于GIT自己的压缩),它不会每次都添加一个新文件,只是更改,所以回购将会改变由增加的大小仓库

3)无,或GIT将无法看到的差异 - GIT做它自己的压缩反正