1 puan yazan GN⁺ 5 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Git uyumlu sürüm kontrol sistemi jj v0.43.0, birden fazla değişiklik kümesi üzerinde komut çalıştıran jj run özelliğini ekleyerek tekrarlayan doğrulama ve düzeltme işlerini daha otomatik hale getiriyor
  • jj run, her değişiklik kümesi için özel bir çalışma kopyası kullanıyor ve cargo check ya da cargo fix gibi çalışma kopyasını değiştiren komutların ürettiği değişiklikleri ve çakışmaları da yayıyor
  • Bu sürüm, git_head(), git_refs(), Git tarzı sembol çözümleme ve ui.revsets-use-glob-by-default seçeneğinin kaldırılması gibi mevcut yapılandırma ve revset kullanım biçimini etkileyen değişiklikler içeriyor
  • jj show --reversed, /etc/jj yapılandırma araması, jj config gc, jj gerrit upload -o, forks() revset fonksiyonu ve üstü çizili metin renk stili de eklendi
  • Windows dosya kimliği işleme, değiştirilemez çalışma kopyası anlık görüntüleri, yinelenen remote URL uyarısı ve Intel Raptor Lake ile aarch64 üzerindeki gevşek Git nesnesi bozulması sorunu düzeltildi

Sürüme genel bakış

  • jj, sade ama güçlü, Git uyumlu bir sürüm kontrol sistemidir
  • v0.43.0 ile birlikte, birden fazla değişiklik kümesine komut uygulayan jj run yeni olarak eklendi
  • Başlangıç için kurulum yönergelerine installation instructions sayfasından ulaşılabilir

Değişiklik kümesi başına komut çalıştırma: jj run

  • jj run, birden fazla değişiklik kümesi üzerinde aynı komutu çalıştırabilir
  • Her değişiklik kümesi, birbirinden ayrılmış özel bir çalışma kopyası kullanır
  • Çalıştırılan komut çalışma kopyasını güncelleyebilir; bunun sonucunda oluşan değişiklikler ve çakışmalar uygun şekilde yayılır
  • Kullanım örnekleri şöyle:
    • jj run -- cargo check --all-features
    • jj run -- cargo fix

Uyumluluğu etkileyen kaldırmalar

  • Revset ve template içinde artık kullanılmayan git_head() ve git_refs() fonksiyonları kaldırıldı
  • refs/heads/main gibi Git tarzı semboller artık revizyon olarak çözümlenmiyor
    • Bunun yerine bookmark/tag için <name> veya <name>@<remote> sözdizimi kullanılmalı
  • Artık kullanılmayan ui.revsets-use-glob-by-default seçeneği de kaldırıldı
  • jj bookmark track ve untrack, artık <kind>:<bookmark>@<remote> desenini desteklemiyor
    • <bookmark>@<remote> sembol sözdizimi desteklenmeye devam ediyor
    • İlgili konu: #9226

Yeni eklenen özellikler

  • jj show, --reversed bayrağını destekliyor
  • jj, yapılandırma dosyalarını artık /etc/jj içinde de arıyor
  • jj config gc, ~/.config/jj/repos klasöründe silinmiş veya taşınmış depoların yapılandırmalarını temizliyor
  • jj gerrit upload, git push -o veya --push-option ile benzer çalışan -o / --option bayrağını destekliyor
  • jj git fetch, değişiklik kimliğini temel alarak yeniden yazılan revizyonların alt revizyonlarını rebase ediyor
    • Önceden, yığında bookmark ekli birden fazla revizyon olduğunda, yeniden yazılan revizyon ve onun alt revizyonları her zaman rebase edilmiyordu
    • Değiştirilemez alt revizyonlar rebase edilmez
  • forks() revset fonksiyonu eklendi
    • İki veya daha fazla çocuğu olan tüm commit'leri döndürür
  • colors ayarı, { crossed-out = true } ile üstü çizili metin stilini destekliyor

Düzeltilen sorunlar

  • Windows'ta bir yolun dosya kimliği alınırken artık sembolik bağlantılar takip edilmiyor
    • Bu, Unix davranışıyla uyumlu hale getirildi
    • Önceden aynı hedefe bağlı iki sembolik bağlantı aynı dosya gibi değerlendiriliyordu
    • Bu kimlik denetimi, çalışma kopyası yazılırken ayrılmış .git ve .jj dizinlerinin alias'larını tespit etmek için kullanılıyor
    • İlgili konu: #8924
  • Çalışma kopyası değiştirilemez durumdayken jj, anlık görüntü sırasında yeni bir working-copy revizyonu oluşturuyor
    • Önceden yeni revizyon, çalışma kopyası değiştirilemez hale geldikten hemen sonra oluşturuluyordu
    • İlgili konular: #7751, #9338
  • jj git remote add, yeni remote'un fetch URL'si veya etkin push URL'si mevcut bir remote ile tam olarak aynıysa uyarı veriyor
    • İlgili konu: #413
  • Intel Raptor Lake CPU'larda ve aarch64 üzerinde bozuk loose Git object sorunu düzeltildi
    • Önceden jj, commit işleminin başarılı olduğunu bildiriyor ama sonrasında git fsck, incorrect data check, corrupt loose object, missing blob hatalarıyla başarısız olabiliyordu
    • Sonraki jj işlemleri de corrupt deflate stream hatasıyla başarısız olabiliyordu

1 yorum

 
GN⁺ 5 시간 전
Lobste.rs yorumları
  • jj run için çok heyecanlıyım

  • jj bookmark track/untrack <name>@<remote> için kullanımdan kaldırma kararının geri alınmasına sevindim
    Her seferinde --remote yazmak hep can sıkıcıydı

  • Intel Raptor Lake CPU ve aarch64 üzerinde bozuk loose Git nesnelerinin düzeltilmiş olması ilginç bir hata gibi geliyor
    Bununla ilgili bir blog yazısı çıkarsa okumak isterim 😃

  • Şimdiye kadar gördüğüm bozuk Git nesnelerinin hepsinin dosya sistemi geri alma işleminden kaynaklandığını düşünüyordum
    Sert kapatma sonrasında f2fs rollback epey ilginç disk durumları yaratabiliyordu; aslında kırık kısmın orada olduğunu öğrenmek çok ilginç

  • jj runın jj fixten nasıl farklı olduğunu merak ediyorum
    Değişiklik günlüğündeki örnekte de jj run ile cargo fix çalıştırılıyordu; ikisi kesinlikle örtüşüyor gibi görünüyor

    • jj run, tüm çalışma kopyasını oluşturup komutu onun içinde çalıştırıyor
      jj fix ise tek bir dosyanın içeriğini komuta pipe ediyor ve çıktıyı o dosyanın yeni içeriği olarak alıyor
      Araç jj fix ile iyi uyuyorsa, genelde formatter veya linter gibi, çok daha hızlı olur; ama jj run daha esnek
    • Anladığım kadarıyla run her değişiklik için komutu çalıştırıyor, fix ise her değişen dosya üzerinde bir filtre çalıştırıyor
      Benim kullanımımda run ile test paketini çalıştırıp her commit’in geçerli olduğunu doğrular, ardından fix ile dosyalara formatter uygularım
      Henüz güncellemedim; bu sadece benim yorumum
  • jj run ile biraz oynayacağım ama direnv kullanma biçimim yüzünden gereğinden fazla uğraştırıcı hâle gelme ihtimalinin yüksek olduğunu düşünüyorum