Apa itu git hooks ?
Git Hooks
digunakan untuk menjalankan custom script ketika kita melakukkan action ke git (seperti : commit, push, dan lainnya).
Fitur ini adalah bawaan dari git, kita tidak perlu untuk melakukkan instalasi terlabih dahulu untuk menggunakannya, asik bukan ? 😄
Konfigurasi git hooks terletak didalam folder .git/hooks
pada git repository.
📝 : ketika kita menjalankan perintah
git init
untuk pertama kalinya, secara default git akan menyuguhkan beberapa script sample pada directory.git/hooks
seperti pada gambar dibawah ini.
Trigger
Git commit hooks bisa kita trigger dengan beberapa cara, contohnya sebagai berikut ini :
commit-msg
: mengeksekusi script setiap kali kita melakukkan commit.pre-push
: mengeksekusi script setiap kali kita melakukkan push.
Untuk membaca lebih lengkapnya terkait trigger commit hooks bisa membaca disini atau bisa juga dengan melihat template commit hooks disini!
Contoh Penerapan
Contoh 1 : commit-msg hooks
Disini kita akan mencoba untuk menerapkan hooks untuk commit-msg
, script ini akan dijalankan ketika melakukkan action git commit
.
#1. Define file : membuat file commit-msg
didalam folder .git/hooks
touch .git/hooks/commit-msg
#2. Set file sebagai executable file : Agar file ini bisa di eksekusi oleh git, kita perlu merubah permission file ini menjadi executable file.
chmod +x .git/hooks/commit-msg
3. Menulis Script : Di contoh script ini kita akan menampilkan custom message setiap kali kita melakukkan commit.
#!/bin/bash
author=$(git log -1 --pretty=format:'%an')
repo=$(basename `git rev-parse --show-toplevel`)
echo "si ${author} lagi nambahin commit ke ${repo} lho gaes :))"
#4. Testing : Setelah kita melakukkan commit, akan menampilkan custom message seperti dibawah ini :
si ervinismu lagi nambahin commit ke learn-git-hooks lho gaes :))
Contoh 2 : pre-push hooks
Contoh kedua ini kita akan mencoba untuk menjalankan unit testing dengan trigger pre-push
hooks, pre-push
hooks akan dijalankan setiap kali kita melakukkan push ke remote repository, dalam case ini kita akan me-run unit testing setiap kali push ke remote repository.
#1. Define file : membuat file pre-push
didalam folder .git/hooks
touch .git/hooks/pre-push
#2. Set file sebagai executable file : Agar file ini bisa di eksekusi oleh git, kita perlu merubah permission file ini menjadi executable file.
chmod +x .git/hooks/pre-push
3. Menulis Script : Di contoh kedua ini kita akan menjalankan rspec
, karena kode yang kita jalankan adalah kode ruby
#!/bin/bashexec rspec spec
#4. Testing : saat kita melakukkan git push remote branch
, akan menjalankan unit testing dan menampilkan hasil testingnya. Seperti gambar dibawah ini :
Kesimpulan
Banyak sekali action yang bisa kita jalankan dengan menerapkan git hooks
agar membantu proses development kita menjadi lebih mudah, beberapa referensi git hooks saya lampirkan pada section Referensi.
Oooh yaa.. untuk sample kode ini saya upload disini jika ingin menjalankan example scriptnya 😄
Semoga bermanfaat, happy hacking! 🍉 🌠