[Git] 使用 pre-commit 匯出 MySQL 資料庫結構實現版本控制

本篇文章更新時間:2020/01/12
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~


現在很多開發框架把資料庫的定義都包裝在 Model 設計裡,所以不需要特別處理到資料庫。但事實上過多包裝就會有其他延伸成本,這裡不多說。

總之開發一個應用程式,通常不只有主程式,還包含了資料庫的設計。但資料庫結構如有更動要怎麼也透過版本控制紀錄?

Git 有提供 hooks 機制 分別在本機與線上。今天主題的操作只需要處理本機端的就好!

pre-commit 顧名思義是在 commit 前呼叫程式來處理

使用方式很簡單,把 hook 代號名稱(例如:pre-commit)的「可執行」檔案放置在專案下 .git/hooks 裡即可! 該目錄下也還有很多使用 Shell Script 寫的範例檔案,如有興趣研究可以把檔案名稱 pre-commit.sample 改名為 pre-commit 來看看結果!

自行建立的 hook 檔案若要改成「可執行」可以使用指令 chmod +x pre-commit 來達成。

若比較熟悉 PHPPython 也是可以,這邊有一個 PHP 的參考專案

#!/usr/bin/env php
<?php
require __DIR__.'/../../vendor/autoload.php';
use PhpGitHooks\Infrastructure\Hook\PreCommit;
$hook = new PreCommit();
$hook->run();

好,回到本主題,其實就是把那個 hook 檔案 pre-commit 內容補上如下:

#!/bin/bash
DBUSER="root"
DBPASS="root"
DB="mxp_customers"
SCHEMAPATH=`pwd`
mysqldump --no-data -u $DBUSER -p$DBPASS -d $DB mxp_customers_table > $SCHEMAPATH/$DB.sql
exit 0

就可以在 git commit 前先把指定資料庫結構給匯出做版本控制囉~


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

參與討論

3 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *