โดยหลักแล้ว hooks จะเขียนเป็น bash หากคุณติดตามไฟล์ตัวอย่าง แต่คุณสามารถเขียนเป็นภาษาใดก็ได้ที่มีอยู่และตรวจสอบให้แน่ใจว่ามีแฟล็กที่สามารถเรียกทำงานได้
ดังนั้นคุณสามารถเขียนรหัส Python หรือ Go เพื่อให้บรรลุเป้าหมายและวางไว้ใต้โฟลเดอร์ hooks มันจะทำงานได้ แต่มันจะไม่ถูกจัดการพร้อมกับพื้นที่เก็บข้อมูล
สองตัวเลือก
a) สคริปต์หลายตัว
คุณสามารถเขียนโค้ด hooks ภายในตัวช่วยและเพิ่มโค้ดเล็ก ๆ ลงใน hooks เพื่อเรียกสคริปต์ที่สมบูรณ์แบบของคุณดังนี้:
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/myprecommit.js
b) สคริปต์เดียว
ตัวเลือกที่เย็นกว่าคือการเพิ่มสคริปต์เพียงหนึ่งสคริปต์เพื่อควบคุมสคริปต์ทั้งหมดแทนที่จะเป็นสคริปต์หลายสคริปต์ ดังนั้นคุณจึงสร้าง hooks / mysuperhook.go ขึ้นมาและชี้ให้เห็นตะขอทุกอันที่คุณต้องการ
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/mysuperhook.go $(basename $0)
พารามิเตอร์จะให้สคริปต์ของคุณที่จะถูกเรียกเบ็ดและคุณสามารถแยกความแตกต่างในรหัสของคุณ ทำไม? บางครั้งคุณอาจต้องการเรียกใช้การตรวจสอบเดียวกันสำหรับการกระทำและผลักดันเช่น
ถ้าอย่างนั้น
จากนั้นคุณอาจต้องการฟังก์ชันเพิ่มเติมเช่น:
- ทริกเกอร์เบ็ดด้วยตนเองเพื่อตรวจสอบว่าทุกอย่างโอเคแม้กระทั่งก่อนที่จะส่งหรือส่ง หากคุณเพียงแค่เรียกสคริปต์ของคุณ (ตัวเลือกกหรือข) จะทำเคล็ดลับ
- ทริกเกอร์ hooks บน CI ดังนั้นคุณไม่จำเป็นต้องเขียนเช็คเหมือนกันสำหรับ CI ใหม่มันก็แค่เรียกการเรียกและส่งทริกเกอร์ เช่นเดียวกับข้างต้นควรแก้มัน
- เรียกเครื่องมือภายนอกเช่นตัวตรวจสอบความถูกต้องของมาร์คดาวน์หรือตัวตรวจสอบความถูกต้องของ YAML คุณสามารถสร้าง syscalls และจำเป็นต้องจัดการกับ STDOUT และ STDERR
- ตรวจสอบให้แน่ใจว่านักพัฒนาซอฟต์แวร์ทั้งหมดมีวิธีง่ายๆในการติดตั้ง hooks ดังนั้นจึงจำเป็นต้องเพิ่มสคริปต์ที่ดีในที่เก็บเพื่อแทนที่ hooks เริ่มต้นด้วยอันที่ถูกต้อง
- มีผู้ช่วยเหลือระดับโลกบางคนเช่นเช็คเพื่อป้องกันการผูกมัดเพื่อพัฒนาและสาขาหลักโดยไม่ต้องเพิ่มลงในที่เก็บข้อมูลทุกแห่ง คุณสามารถแก้ไขได้โดยมีที่เก็บอื่นที่มีสคริปต์ส่วนกลาง
มันง่ายกว่านี้ไหม?
ใช่มีเครื่องมือหลายอย่างที่จะช่วยคุณจัดการ git-hooks แต่ละคนได้รับการปรับแต่งเพื่อจัดการปัญหาจากมุมมองที่แตกต่างกันและคุณอาจต้องเข้าใจพวกเขาทั้งหมดเพื่อให้ได้สิ่งที่ดีที่สุดสำหรับคุณหรือทีมของคุณ GitHooks.comเสนอการอ่านจำนวนมากเกี่ยวกับการเชื่อมโยงและเครื่องมือต่าง ๆ ที่มีในปัจจุบัน
ณ วันนี้มี 21 โครงการที่ระบุไว้ด้วยกลยุทธ์ที่แตกต่างกันในการจัดการ hooks git บางอันใช้สำหรับเบ็ดเดี่ยวบางอันใช้สำหรับภาษาที่เฉพาะเจาะจงและอื่น ๆ
หนึ่งในเครื่องมือเหล่านั้นเขียนขึ้นโดยผมและให้บริการฟรีเป็นโครงการ opensource จะเรียกว่าhooks4git มันเขียนใน Python (เพราะฉันชอบ) แต่ความคิดคือการจัดการรายการทั้งหมดที่ระบุไว้ข้างต้นในไฟล์การกำหนดค่าเดียวที่เรียกว่า. hooks4git.ini ซึ่งอาศัยอยู่ในพื้นที่เก็บข้อมูลของคุณและสามารถเรียกใช้สคริปต์ใด ๆ ที่คุณต้องการโทรในภาษาใด ๆ .
การใช้ git hooks นั้นยอดเยี่ยมมาก แต่วิธีที่พวกเขามักจะนำเสนอคือทำให้ผู้คนไม่ชอบมัน