Pre-Commit Aracının Faydaları

Araçlar #8Yazılım #31

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

Kaynakça