GitHub Commit Geçmişi Yeniden Yazıcı ve Meta Veri Otomasyonu
Çoklu depolarda Git commit geçmişinin yeniden yazılmasını otomatikleştirmek için tasarlanmış, çok iş parçacıklı (multi-threaded) bir DevOps betiği. Ortam değişkeni (environment) filtreleri kullanarak yazar meta verilerini dinamik olarak manipüle eder ve temizlenmiş ağaçları eşzamanlı olarak zorla (force-push) uzak sunucuya gönderir.
Teknoloji yığını
- Diller
- Çatılar & kütüphaneler
- Araçlar
Performans & metrikler
- I/O odaklı Git operasyonlarını paralel iş kuyruklarında işleyerek operasyon süresini büyük ölçüde azaltır
- Aktif iş parçacığı sınırlarını sıkı bir şekilde uygulayarak ve push işlemi sonrasında klonlanan artıkları anında silerek yerel bellek güvenliğini korur
- Sessiz (quiet) klonlama ve hedeflenmiş REST API sorguları aracılığıyla optimize edilmiş ağ kullanımı
Neden geliştirdim?
130'dan fazla depoyu yönetmek, manuel bakımın devasa bir darboğaz oluşturması anlamına gelir. Tüm portföyümdeki committer e-postalarını ve yazar isimlerini güncellemem gerektiğinde, bunu her bir depo için manuel yapmak kesinlikle ölçeklenebilir bir seçenek değildi. GitHub REST API'sini betiklemek ve git filter-branch sürecini paralelleştirmek için bu aracı geliştirdim; böylece saatler sürecek sıkıcı ve riskli Git operasyonlarını hızlı, otomatik bir arka plan işlemine dönüştürdüm.Mimari & kararlar
Mimari, I/O darboğazlarını ve yerel kaynak tükenmesini önlemek için katı bir şekilde kontrol edilen bir iş parçacığı havuzu (maksimum 5 eşzamanlı iş) ile eşzamanlılık sağlamak üzere PowerShell'in Start-Job arka plan çalışma alanlarını (runspaces) kullanır. Depo meta verilerini çekmek için GitHub REST API ile iletişim kurar, geçici (ephemeral) bir çalışma alanı oluşturur, hedefleri klonlar ve git filter-branch yürütmesine doğrudan özel GIT_COMMITTER ve GIT_AUTHOR ortam değişkenlerini enjekte eder. Son olarak, mutasyona uğramış commit geçmişini uzak sunucuya zorla (force) gönderir ve yerel dosya sistemini agresif bir şekilde temizler.
Temel özellikler
- 01Katı job havuzlaması ve kuyruk yönetimi ile eşzamanlı çoklu iş parçacığı (multi-threading)
- 02Toplu depo alımı için otomatik GitHub REST API etkileşimi
- 03Agresif
git filter-branchortam enjeksiyonu ile derin Git ağacı yeniden yazımı - 04Güncellenmiş branch ve tag'lerin uzak (remote) sunucuya otomatik olarak force-push edilmesi
- 05Yürütme sonrası sıkı temizleme (cleanup) rutinleri ile geçici I/O çalışma alanı yönetimi
Teknik değerlendirme
Bu araç, agresif, sistem düzeyinde altyapı otomasyonunun pratik bir göstergesidir. Git geçmişini yeniden yazmak (filter-branch ve force-push) doğası gereği riskler taşır; bu betik, bu riskleri öngörülebilir, izole edilmiş iş parçacığı yürütmesi ve sağlam hata yakalama mekanizmalarıyla yönetir. Doğrudan temel sürüm kontrol sistemleri ve bulut API'leri ile iletişim kuran, amaca yönelik net bir otomasyon yazma yeteneğimi vurgular.