- 2019 ortasında iş ararken Google Goteam ile Sourcegraph arasında seçim yapması gerekmişti
- Sourcegraph'ı seçmesinin nedeni, her şeyi açık şekilde inşa edebilen bir kültüre sahip olmasıydı
- Tüm belgeler varsayılan olarak açıktı; teknik ve ürün RFC'leri, PR/FAQ belgeleri vb. herkese açık Google Drive klasörlerinde tutuluyordu
- Tüm ürün geliştirmeleri herkese açık GitHub depolarında yapılıyordu
- Şu anda
sourcegraph/sourcegraph deposu gizliye alınmış durumda
- Bu, Sourcegraph'ın çekici kültürünü yıkan bir karardı
- Sourcegraph,
sourcegraph/sourcegraph-public-snapshot adlı herkese açık bir anlık görüntü bırakmış durumda
Referansları korumak
- Sourcegraph'ta çalıştığı süre boyunca mühendislik bloguna çok sayıda yazı yazmıştı
- Bu yazıların çoğu, ilgili açık koda giden bağlantıları referans olarak kullanıyordu
- Artık bu bağlantıların hepsi kırılmış durumda
- "Havalı URI'ler değişmez" diye bir söz vardır
- Bağlantılar bir anda kırılmasın diye olabildiğince fazla bilgiyi korumaya çalışıyor
sourcegraph/sourcegraph deposunu efritz/sourcegraph olarak fork'ladı
- Fork'lar pull request'leri devralmaz ve doğrudan branch'lerde referans verilmeyen commit'ler görünmez
- GitHub belgelerine göre, herkese açık bir depo gizliye alınsa bile fork'lar varlığını sürdürür
- Ancak asıl depo gizliye alındığında,
main branch'i dışındaki commit'ler kaybolabilir
İlgili commit'leri kazıma
- Tüm commit'leri bulmak için bir Go programı çalıştırdı
- Bu program 2.645 adet pull request metadata dosyası üretti
jq kullanarak JSON payload'unu okuyup verileri çıkardı
pr_ids.txt, commits.txt, replace_pairs.txt dosyalarını oluşturdu
- Ardından her pull request için merge edilmemiş commit'leri listeleyen ikinci bir program çalıştırdı
- Bu program
commits.txt dosyasına commit'ler ekledi
Commit'leri yeni depo ağına taşıma
- Her ilgili SHA'yı içeren branch'ler oluşturarak bunları fork'a taşıdı
- Git işlemlerini sırayla yürütmek için bir Bash betiği kullandı
Referansları yeniden yazma
- Artık her referansı fork içindeki hedefe bağlayabiliyor
xargs kullanarak otomatik bir süreç kurdu
- Doğrudan commit referanslarını fork'a, pull request referanslarını ise merge commit'lerine yeniden yazdı
GN⁺ Özeti
- Sourcegraph'ın gizliye alınması açık kaynak kültürü üzerinde büyük etki yarattı
- Mühendislik blogundaki çok sayıda referans bağlantısı kırıldı ve bunları korumak için ciddi çaba gerekti
- GitHub fork'ları ve betikler kullanılarak referanslar yeniden yazıldı ve commit'ler korundu
- Bu yazı, açık kaynak projelerinin sürdürülebilirliğini ve referans bağlantılarının önemini vurguluyor
1 yorum
Hacker News görüşleri
Sourcegraph CEO’sunun görüşü:
Başka bir kullanıcının görüşü:
Bir başka kullanıcının görüşü:
Başka bir kullanıcının görüşü:
Bir başka kullanıcının görüşü:
Bir başka kullanıcının görüşü:
Başka bir kullanıcının görüşü:
Başka bir kullanıcının görüşü:
Bir başka kullanıcının görüşü:
Başka bir kullanıcının görüşü: