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