1 पॉइंट द्वारा GN⁺ 5 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Git-संगत version control system jj v0.43.0 में jj run जोड़ा गया है, जिससे कई change set पर commands चलाकर दोहराए जाने वाले verification और fix workflows को अधिक स्वचालित बनाया जा सकता है
  • jj run हर change set के लिए समर्पित working copy का उपयोग करता है, और cargo check या cargo fix जैसी working copy को बदलने वाली commands के changes और conflicts भी propagate करता है
  • इस release में मौजूदा configuration और revset उपयोग के तरीके को प्रभावित करने वाले बदलाव शामिल हैं, जैसे git_head(), git_refs(), Git-शैली symbol resolution, और ui.revsets-use-glob-by-default को हटाना
  • jj show --reversed, /etc/jj configuration खोज, jj config gc, jj gerrit upload -o, forks() revset function, और strikethrough color style भी जोड़े गए हैं
  • Windows file identity handling, immutable working copy snapshot, duplicate remote URL warning, और Intel Raptor Lake तथा aarch64 पर loose Git object corruption की समस्याएं ठीक की गई हैं

रिलीज़ का सारांश

  • jj एक सरल लेकिन शक्तिशाली Git-संगत version control system है
  • v0.43.0 में कई change set पर command लागू करने वाला jj run नया जोड़ा गया है
  • शुरुआत के लिए installation guide installation instructions पर देखी जा सकती है

हर change set पर command चलाना: jj run

  • jj run कई change set पर एक ही command चला सकता है
  • हर change set एक-दूसरे से अलग समर्पित working copy का उपयोग करता है
  • चलाई गई command working copy को update कर सकती है, और उसके परिणामस्वरूप बने changes और conflicts उचित रूप से propagate होते हैं
  • उपयोग के उदाहरण इस प्रकार हैं
    • jj run -- cargo check --all-features
    • jj run -- cargo fix

compatibility को प्रभावित करने वाले removals

  • revset और template में अब उपयोग में नहीं रहने वाले git_head() और git_refs() functions हटा दिए गए हैं
  • refs/heads/main जैसे Git-शैली symbols अब revision के रूप में resolve नहीं होंगे
    • इसके बजाय bookmark/tag के <name> या <name>@<remote> syntax का उपयोग करना होगा
  • अब उपयोग में नहीं रहने वाला ui.revsets-use-glob-by-default option भी हटा दिया गया है
  • jj bookmark track और untrack अब <kind>:<bookmark>@<remote> pattern का समर्थन नहीं करते
    • <bookmark>@<remote> symbol syntax का समर्थन जारी रहेगा
    • संबंधित issue: #9226

नई जोड़ी गई सुविधाएं

  • jj show अब --reversed flag को support करता है
  • jj अब /etc/jj में भी configuration file खोजता है
  • jj config gc ~/.config/jj/repos folder में deleted या moved repositories की configuration को साफ करता है
    • संबंधित issue: #9362
  • jj gerrit upload अब git push -o या --push-option की तरह काम करने वाला -o / --option flag support करता है
  • jj git fetch change ID के आधार पर rewritten revisions के child revisions को rebase करता है
    • पहले, जब stack में bookmark लगे कई revisions होते थे, तब rewritten revision और उसके child revisions हमेशा rebase नहीं होते थे
    • immutable child revisions rebase नहीं किए जाते
  • forks() revset function जोड़ा गया है
    • यह उन सभी commits को लौटाता है जिनके 2 या अधिक child हों
  • colors configuration अब { crossed-out = true } के साथ strikethrough text style को support करती है

ठीक की गई समस्याएं

  • Windows पर path की file identity देखते समय अब symbolic links को follow नहीं किया जाता
    • यह Unix व्यवहार के अनुरूप है
    • पहले, एक ही target से जुड़े दो symbolic links को एक ही file माना जाता था
    • यह identity check working copy लिखते समय reserved .git और .jj directories के alias का पता लगाने के लिए उपयोग होती है
    • संबंधित issue: #8924
  • जब working copy immutable स्थिति में होती थी, तब jj snapshot के दौरान नया working-copy revision बनाता है
    • पहले नया revision working copy के immutable होते ही तुरंत बनाया जाता था
    • संबंधित issue: #7751, #9338
  • jj git remote add अब चेतावनी देता है अगर नए remote का fetch URL या effective push URL किसी मौजूदा remote से बिल्कुल समान हो
    • संबंधित issue: #413
  • Intel Raptor Lake CPU और aarch64 पर corrupted loose Git object की समस्या ठीक की गई है
    • पहले jj commit success की रिपोर्ट करता था, लेकिन बाद में git fsck incorrect data check, corrupt loose object, missing blob के साथ fail हो सकता था
    • इसके बाद jj के operations भी corrupt deflate stream के साथ fail हो सकते थे

1 टिप्पणियां

 
GN⁺ 5 시간 전
Lobste.rs की राय
  • jj run को लेकर बहुत उत्साहित हूं

  • अच्छा लगा कि jj bookmark track/untrack <name>@<remote> का deprecation वापस ले लिया गया
    हर बार --remote टाइप करना हमेशा थोड़ा खलता था

  • Intel Raptor Lake CPU और aarch64 पर corrupted loose Git objects को ठीक करने वाला हिस्सा किसी दिलचस्प bug जैसा लगता है
    अगर इस पर कोई संबंधित blog post आए तो पढ़ना चाहूंगा 😃

  • अब तक मैंने जितने भी corrupted Git objects देखे थे, मुझे लगता था वे सभी filesystem rollback की वजह से थे
    hard shutdown के बाद f2fs rollback अक्सर disk की काफी दिलचस्प state बना देता था, इसलिए यह जानना बहुत रोचक है कि असल में उसी तरफ कुछ टूटा हुआ था

  • सोच रहा हूं कि jj run, jj fix से कैसे अलग है
    changelog के example में भी jj run से cargo fix चलाया गया था, तो दोनों में साफ़ तौर पर overlap लगता है

    • jj run पूरी working copy बनाता है और उसके अंदर command चलाता है
      jj fix किसी single file की content को command में pipe करता है, और output को उस file की नई content मान लेता है
      अगर कोई tool jj fix के साथ अच्छी तरह fit बैठता है, आम तौर पर formatter या linter की तरह, तो वह काफी तेज़ होता है, लेकिन jj run ज्यादा flexible है
    • मेरी समझ के मुताबिक run हर change के लिए command चलाता है, और fix हर बदली हुई file पर filter चलाता है
      मेरे case में, run से test suite चलाकर यह check होगा कि हर commit valid है या नहीं, और फिर fix से files पर formatter चलाया जाएगा
      मैंने अभी update नहीं किया है, और यह सिर्फ मेरी interpretation है
  • jj run को थोड़ा try जरूर करूंगा, लेकिन जिस तरह मैं direnv use करता हूं, उसकी वजह से यह जरूरत से ज्यादा पेचीदा हो जाने की काफी संभावना है