jj v0.42.0 रिलीज़ - Git संगत वर्ज़न मैनेजमेंट सिस्टम
(github.com/jj-vcs)- mimalloc मेमोरी allocator पर स्विच करके मल्टीथ्रेड performance में सुधार
jj commit --reset-author/--author,jj describe --no-edit/--edit/--reset-author/--authorआदि deprecated command options हटाए गएjj git push --allow-new,jj metaedit --update-committer-timestampoptions हटाए गएgit.auto-local-bookmark,git.push-new-bookmarksआदि deprecated config options हटाए गएjj evologनेjj0.30 से पहले रिकॉर्ड किए गए legacy commit predecessor के support को बंद किया- shell autocompletion अब user-defined alias, revset-alias, template-alias, fileset-alias के description दिखाती है, और table-form alias definitions के
.docfield से description निकालती है jj showअब कई revisions लेकरgit showके अधिक करीब हर revision को क्रम से दिखाता हैjj git fetchchange ID-आधारित evolution history बनाता है, और अगर remote change ID को preserve करता है तो local descendant revisions को rewritten parent के ऊपर फिर से rebase करता हैjj util backend nameकमांड मौजूदा repository में इस्तेमाल हो रहे commit backend का नाम दिखाता है- diff editor के लिए
edit-invocation-modesetting जोड़ी गई;"file-by-file"सेट करने पर हर बदली हुई file के लिए editor एक-एक बार चलता है, जिससेvimdiffजैसे file-level tools का उपयोग संभव होता है jj git remote addअब खाली remote name या spaces वाले remote name पर panic की जगह error report करता है- color output बंद होने पर color-words diff अब before/after को अलग पंक्तियों में दिखाता है, जिससे piped या redirected diff की readability बेहतर होती है
1 टिप्पणियां
Lobste.rs की राय
अगर
jj git fetchअब change ID-आधारित evolution history बनाता है, तो क्या इसका मतलब है कि यदि remote change ID को सुरक्षित रखता है, तो हर बारjj git fetchके तुरंत बादjj new mainकरने की ज़रूरत नहीं रहेगी?अगर ऐसा है, तो यह काफ़ी अच्छा quality-of-life improvement लगता है
mainपर आ जाएगा, इसलिए उस हिस्से में शायद इससे मदद नहीं मिलेगीबस यह नहीं पता कि GitHub-generated merge commit में, जहाँ change ID नहीं होता, तब क्या होगा
mimallocmemory allocator पर स्विच करके multi-threaded performance बढ़ाने वाली बात ने ज़्यादा उत्सुक कियालंबे समय तक चलने वाली processes में fragmentation कम करने के लिए मैंने
jemallocजैसी चीज़ें इस्तेमाल की हैं, लेकिनjjतो ऐसा लगता है जैसे 1ms में शुरू होकर 10ms के भीतर खत्म हो जाता है, इसलिए allocator बदलने का असर महसूस होना थोड़ा surprising हैथोड़ा और खोजने पर PR https://github.com/jj-vcs/jj/pull/9484 मिला, और https://github.com/jj-vcs/jj/issues/2490#issuecomment-2595323515 के अलावा ज़्यादा कुछ नहीं मिला, पर यह कोई बहुत बड़ा speedup नहीं लगता। फिर भी अगर यह तेज़ है और बदलाव भी बस कुछ लाइनों का है, तो ठीक है
इसमें कहा गया था, “अगर remote change ID को सुरक्षित रखता है”, लेकिन मुझे नहीं पता आम तौर पर remote ऐसा करते भी हैं या नहीं
मुझे पता है कि
jj gerrit uploadchange ID footer जोड़ता है, लेकिन सामान्यjj git pushऐसा नहीं करतालेकिन GitHub के squash merge या rebase merge जैसी operations, जो commit को फिर से लिखती हैं, उसे सुरक्षित नहीं रखेंगी। standard
libgit2-based tools से प्रोसेस करने पर custom header सुरक्षित नहीं रहता, जबकि GitButler द्वारा इस्तेमाल की जाने वाली Rust library जैसी कुछ tools custom header preservation सपोर्ट करती हैं, लेकिन forge वास्तव में ऐसी चीज़ें इस्तेमाल करते हैं या नहीं, इस पर संदेह हैऔर यह भी नहीं पता कि यह सही तरह से सुरक्षित हो रहा है या नहीं, इसे जाँचना कैसे चाहिए
docs में इस पर और जानकारी है
GitHub भी सुरक्षित रखता है; lobsters codebase में pushcx के commit या मेरे commits देखकर यह जाँचा जा सकता है
मैं यह पढ़ने या देखने लायक सामग्री ढूँढ रहा हूँ कि standard Git की जगह jj क्यों इस्तेमाल करें
मुझे पता है कि jj Git के ऊपर काम कर सकता है, और मैंने hobby projects में इसे आज़माया भी है, लेकिन यह क्यों बेहतर या आसान है, इस बारे में अभी तक कोई निर्णायक आकर्षण नहीं मिला