使用git repo和虚拟主机设置MAMP

使用git repo和虚拟主机设置MAMP,git,mamp,virtualhost,Git,Mamp,Virtualhost,我在我的机器上设置了MAMP来开发一些网站内容,因为我想以一种有组织的方式分离我的项目,所以我为每个项目设置了虚拟主机,这是可行的。我将每个项目的web文件(javascripts、css、html、php)放在一个目录中,例如/Users/Alex/Dropbox/code/projectX/。我的MAMP目录与开箱即用的目录完全相同;所有Mysql内容都在/Applications/MAMP/db中\projectX\已经是git存储库,但我的db文件不受版本控制 问题:如何控制与每个web

我在我的机器上设置了MAMP来开发一些网站内容,因为我想以一种有组织的方式分离我的项目,所以我为每个项目设置了虚拟主机,这是可行的。我将每个项目的web文件(javascripts、css、html、php)放在一个目录中,例如
/Users/Alex/Dropbox/code/projectX/
。我的MAMP目录与开箱即用的目录完全相同;所有Mysql内容都在
/Applications/MAMP/db
\projectX\
已经是git存储库,但我的db文件不受版本控制

问题:如何控制与每个web项目关联的数据库的版本?我脑子里有三种方法,不知道如何实现前两种。我更喜欢第一个,因为它看起来更简单,并且非常适合虚拟主机方案

a) 将projectX的数据库目录移动到
\projectX\
文件夹中,然后只需
git添加它即可。但是,我不知道如何告诉MySQL我在这里有这个数据库,在那里有那个数据库

b) 不知何故,告诉git它还需要版本控制
Applications\MAMP\db\mysql\projectXdb
,就像它在
\projectX\
中一样

c) 不要太花哨,只需为数据库建立一个单独的存储库即可

首先,我会阅读他所发布的内容和链接——仅仅因为它们是一本好书

简而言之(这可能是我误解问题的地方),我认为将实际数据库存储到版本控制中从来都不是最明智的做法。相反,您需要决定某种存储数据库脚本的系统来控制/更改/设置数据库。因此,这些脚本可以绝对存储在代码文件结构中的任何位置

如果这个想法可行,那么您就不必更改实际数据库的位置,git也不必关心实际数据库在哪里

我建议的一个例子是制作如下文件:

ALTER TABLE Customer
  ADD ShoeSize int NOT NULL DEFAULT 0
GO

INSERT INTO OrderStates 
   (OrderStateID, OrderState)
   VALUES(3, 'Cancelled')
GO
然后将其存储到名为
/Users/Alex/Dropbox/code/projectX/db scripts
或其他目录中。在该目录中,将包含随时管理/复制数据库所需的所有脚本

编辑:

如果软件将所有信息保存在数据库本身中,那么可以运行
mysqldump
(或等效)并将该脚本存储到代码中

存储文本版本允许两件事:

a) 它比存储二进制文件更有效(如果我正确理解RCS/git的话)


b) git可以对文件进行Diff和grep搜索。(如果已经有另一种工具可以做到这一点,这可能无关紧要)

这是一个有趣的想法。在工作中,我们版本控制数据库,我从来没有想过不。。。但是在我们使用的软件中,脚本与数据库文件是不可分割的,因此没有真正的替代方案。但在我和MAMP在家的项目上,我绝对可以。