【问题标题】:Setting up MAMP with git repo and virtual hosts使用 git repo 和虚拟主机设置 MAMP
【发布时间】:2012-05-10 15:41:30
【问题描述】:

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

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

a) 将 projectX 的数据库目录移动到 \projectX\ 文件夹,然后只是 git add 它。不过,我不知道如何告诉 MySQL 我这里有这个数据库,那里有那个数据库。

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

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

【问题讨论】:

    标签: git mamp virtualhost


    【解决方案1】:

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

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

    如果这个想法行得通,那么你不必更改实际数据库的位置,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 可以对文件进行差异和 grep 搜索。 (如果已经有其他工具可以做到这一点,这可能无关紧要)

    【讨论】:

    • 这是一个有趣的想法。在工作中,我们对数据库进行版本控制,我从没想过不这样做……但是对于我们使用的软件,脚本与数据库文件密不可分,因此没有真正的替代方案。但在我使用 MAMP 在家的项目中,我绝对可以。
    猜你喜欢
    • 2020-02-15
    • 2019-06-11
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2013-06-20
    • 2014-08-06
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多