วัน: 18 กรกฎาคม 2004

การสร้าง Git Graph ด้วย Mermaid.js: แสดงโครงสร้าง Branch, Commit, Merge และ Rebase ในการพัฒนาซอฟต์แวร์การสร้าง Git Graph ด้วย Mermaid.js: แสดงโครงสร้าง Branch, Commit, Merge และ Rebase ในการพัฒนาซอฟต์แวร์

ในฐานะ Senior Architect การทำความเข้าใจโครงสร้างการพัฒนาซอฟต์แวร์ที่ซับซ้อนเป็นสิ่งสำคัญอย่างยิ่ง การจัดการ Git Branch, Commit, Merge, และ Rebase อาจทำให้เกิดความสับสนได้ง่าย โดยเฉพาะอย่างยิ่งเมื่อเกี่ยวข้องกับการจัดการ Schema และ Migration ของฐานข้อมูลอย่าง PostgreSQL

แทนที่จะพึ่งพาภาพ Screenshot ของ Git GUI ที่อาจล้าสมัย บทความนี้จะนำเสนอแนวทางที่ทันสมัยในการสร้างแผนภาพ Git Graph โดยใช้ Mermaid.js ซึ่งเป็นเครื่องมือที่ช่วยให้คุณสามารถแปลงประวัติการพัฒนาที่ซับซ้อนให้เป็นแผนภาพที่ชัดเจนและเป็นโค้ดที่สามารถแก้ไขได้ (Code-as-Documentation) ทำให้ทีมงานทุกคน ไม่ว่าจะเป็น Developer หรือ DBA สามารถเห็นภาพรวมของ Flow การทำงานได้อย่างรวดเร็ว

หลักการทำงาน: การผสาน Git Flow กับ PostgreSQL Schema

Mermaid.js ช่วยให้เราสามารถกำหนดโครงสร้างกราฟ (Graph) ได้ด้วยไวยากรณ์ที่อ่านง่าย ซึ่งเราสามารถนำหลักการนี้มาใช้จำลองโครงสร้างการพัฒนาที่ส่งผลต่อ PostgreSQL ได้ ตัวอย่างเช่น เมื่อมีการ Merge Branch ที่มี Commit การอัปเดต Schema (Migration) เข้ามา เราสามารถบันทึกสถานะเหล่านี้ลงในตารางติดตามการ Migrate ของ PostgreSQL ได้

สมมติว่าเราต้องการบันทึกว่าการ Merge ครั้งใหญ่ (Master Branch) ได้รวมการเปลี่ยนแปลง Schema จาก Feature Branch ที่มี Commit ID ‘abc1234’ เข้ามาแล้ว เราสามารถใช้คำสั่ง PostgreSQL เพื่อบันทึกสถานะนี้:

SQL

-- ตารางสำหรับติดตามสถานะการ Migrate ของ Schema<br>CREATE TABLE schema_migrations (\n    migration_id SERIAL PRIMARY KEY, \n    branch_name VARCHAR(50) NOT NULL, \n    commit_hash VARCHAR(40) UNIQUE NOT NULL, \n    migration_status VARCHAR(20) DEFAULT 'SUCCESS', \n    executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- บันทึกว่าการ Merge จาก 'feature/user_auth' สำเร็จแล้ว<br>INSERT INTO schema_migrations (branch_name, commit_hash) VALUES ('feature/user_auth', 'abc1234');

การสร้าง Git Graph ด้วย Mermaid.js สำหรับ Visualization

เมื่อได้ข้อมูลสถานะการพัฒนาที่ถูกบันทึกอย่างเป็นระบบแล้ว เราสามารถใช้ Mermaid.js เพื่อสร้างภาพรวมของ Flow การพัฒนาได้ โดยการจำลองโครงสร้าง Commit และ Merge:

Plain Text

graph LR\n    A[Initial Commit] --> B(Feature A Commit)\n    B --> C{Merge Feature A}\n    C --> D(Feature B Commit)\n    D --> E{Merge Feature B}\n    E --> F[Master Branch];

หากเกิดการ Rebase เพื่อแก้ไขประวัติการพัฒนา (เช่น การลบ Commit ที่ไม่จำเป็น) เราสามารถแสดงการเปลี่ยนแปลงนี้ใน Mermaid ได้ โดยการแสดงเส้นทางใหม่ที่กระชับขึ้น ซึ่งสะท้อนถึงความสะอาดของประวัติการพัฒนาที่ส่งผลต่อการออกแบบ Schema ใน PostgreSQL

บทสรุป: ยกระดับมาตรฐานการสื่อสารทางวิศวกรรม

การใช้ Mermaid.js ในการสร้าง Git Graph ไม่ได้เป็นเพียงแค่การสร้างแผนภาพ แต่เป็นการยกระดับมาตรฐานการสื่อสารทางวิศวกรรม (Engineering Communication) อย่างแท้จริง การผสานการแสดงผลโครงสร้าง Git Flow เข้ากับการจัดการสถานะข้อมูลใน PostgreSQL ทำให้ทีมสามารถตรวจสอบความสมบูรณ์ของโค้ดและ Schema ได้อย่างอัตโนมัติและเป็นมาตรฐานเดียวกัน การทำเช่นนี้ช่วยลดความเข้าใจผิด ลดความขัดแย้งในการ Merge และทำให้กระบวนการ Deploy ระบบที่ซับซ้อนเป็นไปอย่างราบรื่นและมีประสิทธิภาพสูงสุด