Pre-commit เป็นเครื่องมือที่ช่วยในกระบวนการพัฒนาซอฟต์แวร์ มีหน้าที่ตรวจสอบและปรับปรุงการเขียนโค้ดก่อนที่จะทำการ commit เข้าสู่ git หลังจากที่ผู้พัฒนาได้ทำการส่งข้อมูล (commit) โค้ดเข้าสู่เวอร์ชันควบคู่กับข้อความอธิบายการเปลี่ยนแปลง ซึ่งเป็นที่นิยมในทีมพัฒนาซอฟต์แวร์หลายๆ ที่ สำหรับการพัฒนาแบบมีหลายคนทำงานร่วมกัน

ติดตั้ง pre-commit โดยใช้ pip ด้วยคำสั่ง

pip install pre-commit

เมื่อ pre-commit ติดตั้งสำเร็จ คุณสามารถใช้คำสั่ง pre-commit --version เพื่อตรวจสอบเวอร์ชันที่ติดตั้งและยืนยันว่าการติดตั้งเสร็จสิ้นแล้ว

สร้างไฟล์ .pre-commit-config.yaml ขึ้นมาใน root โปรเจคของเรา โดยระบุคำสั่ง pre-commit ที่คุณต้องการให้ทำงานในขั้นตอนการ commit ตัวอย่าง .pre-commit-config.yaml อาจมีดังนี้:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v4.1.0
  hooks:
  - id: check-yaml
  - id: end-of-file-fixer
  - id: trailing-whitespace
  - id: debug-statements

ตัวอย่างนี้จะทำการติดตั้งตัวโมดูลเพิ่มเติมที่จำเป็นในการตรวจสอบไฟล์ที่มีการเปลี่ยนแปลงในขั้นตอนการ commit อย่างเช่น
– check-yaml
– end-of-file-fixer
– trailing-whitespace
– debug-statements ซึ่งเป็นตัวอย่างของเครื่องมือตรวจสอบโค้ดที่มีอยู่ใน pre-commit-hooks repository

หรือเราสามารถ custome เองได้ด้วยว่าตอน commit อยากให้ตรวจสอบอะไรเพิ่มเช่น unittest แต่ยังไม่ขอทำตัวอย่างในบทความนี้

ต่อมา ทำการกำหนดค่าการตั้งค่า pre-commit โดยใช้คำสั่ง:

pre-commit install

เสร็จขั้นตอนการติดตั้งเรียบร้อยแล้วคุณสามารถเข้าไปตรวจสอบใน folder .git/hooks ได้ว่าเราได้ติดตั้งเรียบร้อยแล้ว
และหลังจากตอนนี้เมื่อไหร่ที่เรา commit code ตัว githook จะทำการตรวจสอบให้ตามคำสั่งที่เราได้กำหนดไว้ในไฟล์ .pre-commit-config.yaml นั้นเอง

และนอกจากเราจะทำ pre commit ได้แล้วเราสามารถทำ pre push , check message pattern ได้ด้วยนะสามารถอ่านเพิ่มเติมได้ที่
https://pre-commit.com/