Bot & Sistem Otomasyonu
Açık Kaynak

GitHub Commit Geçmişi Yeniden Yazıcı ve Meta Veri Otomasyonu

PowerShellShellGitHub REST APIGitPowerShell Jobs

Ç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ı

PowerShellShellGitHub REST APIGitPowerShell Jobs

Sistem Metrikleri

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ı

Bunu Neden İnşa Ettim?

"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

  • 01.Katı job havuzlaması ve kuyruk yönetimi ile eşzamanlı çoklu iş parçacığı (multi-threading)
  • 02.Toplu depo alımı için otomatik GitHub REST API etkileşimi
  • 03.Agresif `git filter-branch` ortam enjeksiyonu ile derin Git ağacı yeniden yazımı
  • 04.Güncellenmiş branch ve tag'lerin uzak (remote) sunucuya otomatik olarak force-push edilmesi
  • 05.Yürütme sonrası sıkı temizleme (cleanup) rutinleri ile geçici I/O çalışma alanı yönetimi
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.