jj v0.43.0 जारी
(github.com/jj-vcs)- 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/jjconfiguration खोज,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-featuresjj 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 का उपयोग करना होगा
- इसके बजाय bookmark/tag के
- अब उपयोग में नहीं रहने वाला
ui.revsets-use-glob-by-defaultoption भी हटा दिया गया है jj bookmark trackऔरuntrackअब<kind>:<bookmark>@<remote>pattern का समर्थन नहीं करते<bookmark>@<remote>symbol syntax का समर्थन जारी रहेगा- संबंधित issue: #9226
नई जोड़ी गई सुविधाएं
jj showअब--reversedflag को support करता हैjjअब/etc/jjमें भी configuration file खोजता हैjj config gc~/.config/jj/reposfolder में deleted या moved repositories की configuration को साफ करता है- संबंधित issue: #9362
jj gerrit uploadअबgit push -oया--push-optionकी तरह काम करने वाला-o/--optionflag support करता हैjj git fetchchange ID के आधार पर rewritten revisions के child revisions को rebase करता है- पहले, जब stack में bookmark लगे कई revisions होते थे, तब rewritten revision और उसके child revisions हमेशा rebase नहीं होते थे
- immutable child revisions rebase नहीं किए जाते
forks()revset function जोड़ा गया है- यह उन सभी commits को लौटाता है जिनके 2 या अधिक child हों
colorsconfiguration अब{ 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और.jjdirectories के alias का पता लगाने के लिए उपयोग होती है - संबंधित issue: #8924
- जब working copy immutable स्थिति में होती थी, तब
jjsnapshot के दौरान नया working-copy revision बनाता है jj git remote addअब चेतावनी देता है अगर नए remote का fetch URL या effective push URL किसी मौजूदा remote से बिल्कुल समान हो- संबंधित issue: #413
- Intel Raptor Lake CPU और aarch64 पर corrupted loose Git object की समस्या ठीक की गई है
- पहले
jjcommit success की रिपोर्ट करता था, लेकिन बाद मेंgit fsckincorrect data check,corrupt loose object,missing blobके साथ fail हो सकता था - इसके बाद
jjके operations भीcorrupt deflate streamके साथ fail हो सकते थे
- पहले
1 टिप्पणियां
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 करता हूं, उसकी वजह से यह जरूरत से ज्यादा पेचीदा हो जाने की काफी संभावना है