Suat Karakuşoğlu yazdı.
Şekil 1: Photo by Anne Nygård
¶İçerik
Merhabalar, işlerimizin elle yönetilen taraflarını daha otomatize etmek, gerçekten fark/değer yaratan işlerimize odaklanabilmemiz için bize daha çok zaman sağlar.
¶Neden Pre Commit kontrolu gerekli?
Ortaya koyduğumuz işlerde commit aşaması artık yaptığımız işin düzgün bir çerçeveye oturduğunu netleştirdiğimiz noktaları ifade ediyor. Bu aşamada güzel bir açıklama ile işimizi repomuza kaydediyoruz.
Commit öncesi kontrol etmemiz gereken bazı noktalar olabiliyor. Git
bu noktada bize pre-commit
müdahale fazını sunuyor. Ancak ekip içinde çalışması gereken bu fazları paylaşabilmek ve belki de konfigürasyonları hızlıca bir projeden diğerine taşıyabilmek hayatımızda git'in altyapısını kullanan bir başka araca yer açıyor: https://pre-commit.com/.
¶Pre Commit ayarlarının yapılması
¶Pre Commit Yüklenmesi
Pre-commit, bilgisayara yüklememiz gereken bir araç. pip
üzerinden veya brew
üzerinden yükleyebiliyoruz.
# Python üzerinden yükleme komutu
pip install pre-commit
# Apple makinelerde yükleme komutu
brew install pre-commit
¶Proje içerisinde ayarlanması
.pre-commit-config.yaml
dosyasının ana dizinde yaratılması gerekiyor.
Misal SwiftFormat
komutunun her commit öncesi çalışması için bu dosyada yapılacak olan ayarlama şöyle:
repos:
- repo: https://github.com/nicklockwood/SwiftFormat
rev: 0.53.5
hooks:
- id: swiftformat
name: SwiftFormat
entry: swiftformat
language: system
types: [swift]
stages: [commit]
args: ["--config", ".swiftformat", ".", "--swiftversion", "5.9.2"]
Pre-commit desteği olan repoları buraya ekleyebiliyoruz. rev
ile hangi branch/commit'e bakacağını söylüyoruz.
¶Projedeki pre-commitlerin git hooklara eklenmesi
Artık configüration yapıldıktan sonra git hooklarına eklenmesi için bu ayarların yüklenmesi gerekiyor.
# Bu komut ile '.git/hooks' klasörü altına .pre-commit-config.yaml yüklenir.
pre-commit install
¶Pre-Commit aracının faydaları
Herkes commitlemeden önce kodun belirli kurallara göre formatlandığından ve kontrolden geçtiğinden emin oluyoruz.
Bir standart belirlenip herkesin o standarda uygun yazması ve tutarlığlığı sağlar.
Geliştirici zamanından ve PR'ların ilerlemesinde zaman tasarrufu sağlanır.
En güzel taraflarından bir tanesi bu paylaşılan ayarlar sayesinde hem yeni geliştirici onboardınglerinde yönlendirici ve eğitici bir araç olabilir.
Biz projelerimiz genelindeki böyle araçları/komutları Makefile dosyasının içerisine adım olarak ekleyerek daha kolay keşfedilebilir ve kullanılabilir kılmaya özen gösteriyoruz.
install_pre_commit_hook:
pre-commit install
run_pre_commit_phases_manually:
pre-commit run --all-files