4 puan yazan GN⁺ 2024-11-10 | 2 yorum | WhatsApp'ta paylaş
  • Git merge conflict'lerini çözmek için kullanılan bir araç; dosya içindeki ağacı anlayarak iki tarafın ihtiyaçlarını uyumlu biçimde çözer
  • Yeni diller bildirimsel olarak eklenebilir
  • Git'in varsayılan merge algoritması yerine Mergiraf'ın kullanılacağı şekilde yapılandırılabilir
    • merge, revert, rebase, cherrypick gibi Git komutlarını iyileştirir
  • Ya da Git'in özgün davranışı korunurken, çatışma oluştuğunda Mergiraf manuel olarak çağrılabilir.

Mergiraf'ın hedefleri

  • Çatışmaları gizlememek
    • Sözdizimi farkında merge sezgisel yöntemleri bazen aşırı iyimser davranıp bir çatışmanın çözüldüğünü varsayabilir
    • Mergiraf, şüpheli durumlarda dosyada çatışma işaretlerini koruyarak mümkün olan en iyi durumu muhafaza eder
    • Tüm çatışmaları kendi başına çözdüyse, arabuluculuk işlemini mergiraf review komutuyla gözden geçirmeniz önerilir
    • Merge işlemi yanlış görünüyorsa, mergiraf report ile bunu kolayca bildirebilirsiniz
  • Etkileşimli kullanım için yeterince hızlı olmak
    • Zürafalar saatte 60 kilometre hızla koşabilir
    • Bir dosyanın dallanmış sürümlerini birleştirme işi, çatışma olmadığı sürece çoğu zaman fark edilmeden rutin olarak gerçekleşir
    • Mergiraf, iş akışını kesintiye uğratmamak için hızlı olmaya çalışır
  • Diğer yöntemlere açık olmak
    • Pek çok durumda satır tabanlı birleştirme iyi çalışır ve ağaç manipülasyonu gerekmez
    • Satır tabanlı birleştirmede çatışma yoksa Mergiraf bu birleştirmeyi döndürür (çok hızlıdır)
    • Satır tabanlı birleştirme yinelenen anahtarlar oluşturursa, Mergiraf sorunu çözmek veya çatışma işaretleriyle vurgulamak için biraz ek çalışma yapar

2 yorum

 
2147483647 2024-11-11

Zürafaların saatte 60 kilometre hızla koşabildiğini biliyor muydunuz?

 
GN⁺ 2024-11-10
Hacker News görüşü
  • SemanticDiff'e benzer bir iş yapıyorlar ve tree-sitter ile GumTree kullanırken sorunlar yaşıyorlar

    • tree-sitter çoğunlukla sözdizimi vurgulama için yazıldığından, kod değişikliklerinde doğru sözdizimsel analiz yapmak zor
    • GumTree hızlı sonuç veriyor ancak sık sık hatalı eşleştirmeler döndürüyor
    • Dijkstra tabanlı bir yaklaşıma geçerek daha iyi sonuçlar alıyorlar
  • Mergiraf'ın mimari bölümü, karmaşık bir aracın nasıl çalıştığını derinlemesine açıklıyor

  • Zürafayı seçme nedenleri, boyu sayesinde uzağı görebilmesi ve kara memelileri arasında en büyük kalbe sahip olması

  • Bazı eklemelerde sıranın önemli olmadığını iddia etmelerine eleştirel yaklaşılıyor

    • Dil düzeyinde sıra önemli olmayabilir, ancak insanlar için belirli bir sıra önemli olabilir
    • Örnek olarak, Base struct Foo; struct Bar; arasında Left impl Foo { } eklerken Right struct Baz; ekliyorsa, bilgisayar farkı algılamıyor
  • Git'in merge driver geliştirmesine olumlu bakılıyor

    • Standart 3-way merge dili tanımadığından sorunlara yol açabiliyor
    • Python kodunda iki farklı branch'in ayrı ayrı farklı print ifadelerini silmesi geçersiz kod oluşturabiliyor
  • Ekipler, probleme uyacak şekilde temel dili genişlettiğinde sözdizimi farkındalığı olan araçlar sorun yaşayabiliyor

    • Rust makroları veya "go generate" kullanım senaryolarından bahsediliyor
  • Otomatik biçimlendirmeyle ilgili çakışmaları çözmeye yardımcı olabilecek bir fikir

    • Kod taşımadan kaynaklanan anlamsal çakışmaları tespit edip edemeyeceğini merak ediyorlar
  • Mergiraf'ı denemeyi planlıyor ve git-absorb ile birlikte kullanıyor

    • İki aracın kusursuz çalışması veya Git'e resmî olarak entegre edilmesi iyi olurdu
  • Python desteği faydalı görünüyor

    • Python'un girintileme tabanlı AST'sinin iyi çalışması bekleniyor
  • Dil desteği sınırlı, ancak daha fazla dil desteği eklenmesi isteniyor