1 पॉइंट द्वारा GN⁺ 5 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • jj command को बार-बार टाइप करने की छोटी-सी गलती subcommand error में बदल जाती है, लेकिन इसे jj config alias से absorb किया जा सकता है
  • उदाहरण में मौजूदा edit हो रहे changeset की short ID पाने के लिए चलाया गया jj jj show -T 'change_id.short()' fail होता है
  • jj, git की तरह config file में alias define कर सकता है, इसलिए jj util exec से बचे हुए command को फिर से jj को पास किया जा सकता है
  • Simple alias में -T को execute होने वाले target के बजाय jj util exec के option की तरह interpret किया जाता है, इसलिए argument parsing रोकने के लिए -- लगाना पड़ता है
  • Final config jj = ["util", "exec", "--", "jj"] इस्तेमाल करने पर jj jj show ही नहीं, कई बार nested jj jj jj... show भी वही changeset ID output करता है

बार-बार टाइप किया गया jj subcommand error से fail होता है

  • jj इस्तेमाल करते समय command line में एक और jj टाइप कर देने पर, दूसरा jj subcommand के रूप में interpret होता है और fail हो जाता है
    • उदाहरण मौजूदा edit हो रहे changeset की short ID लाने वाला command है
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
  • Shell alias से भी workaround किया जा सकता है, लेकिन jj की अपनी config का alias इस्तेमाल किया जा सकता है
    • Config edit करने के लिए jj config edit इस्तेमाल किया जा सकता है
    • Shell से config बदलने के लिए jj config set इस्तेमाल किया जा सकता है

jj util exec में -- से argument forwarding fix करना

  • पहला attempt alias से jj util exec के जरिए फिर से jj run करने का तरीका है
[aliases]


# jj all the way down
jj = ["util", "exec", "jj"]
  • इस config में -T execute होने वाले target jj के बजाय jj util exec के option की तरह interpret होता है और fail हो जाता है
$ jj jj show -T 'change_id.short()'
error: unexpected argument '-T' found
tip: to pass '-T' as a value, use '-- -T'
Usage: jj util exec [OPTIONS] <COMMAND> [ARGS]...
For more information, try '--help'.
  • -- जोड़ने पर उसके बाद option parsing बंद हो जाती है और बचे हुए arguments वैसे ही execute होने वाले target को pass किए जा सकते हैं
[aliases]


# jj all the way down
jj = ["util", "exec", "--", "jj"]
  • Final config के बाद normal jj show, nested jj jj show, और ज्यादा बार repeated jj jj jj ... show सभी वही short changeset ID output करते हैं
$ jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx

1 टिप्पणियां

 
GN⁺ 5 시간 전
Lobste.rs की राय
  • पहले भी git git git git git था

  • यह और भी सरल तरीके से किया जा सकता है:

    [aliases]  
    jj = []  
    

    इस रूप का इकलौता नुकसान यह है कि, अगर मुझे ठीक याद है, तो jj jj की तरह बिना किसी और argument के चलाने पर यह jj की तरह default command नहीं चलाता

    • तो फिर वह सरल तरीका वास्तव में वही काम नहीं कर रहा, है ना?
  • वाह, लगभग 1 साल पहले (09/28/25) JJ Discord पर यही समाधान पोस्ट किया था
    jj jj ... टाइपो को jj ... की तरह काम कराने के लिए असल में इसकी जरूरत होती है:

    [aliases]  
    jj = ["util", "exec", "--", "jj"]  
    

    सच कहूँ तो मुझे यह तरीका काफी पसंद है

  • क्या यह bunny party का संदर्भ है?

  • मैंने इसे अपने maintain किए हुए jj config gist में भी जोड़ दिया है: https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c

  • फिर भी मैं Jujutsu क्या है और इसे क्यों इस्तेमाल करना चाहिए, इसका tweet-length, 5 साल के बच्चे को समझाने जैसा version देखना चाहूँगा
    पिछली नौकरी में मैंने 4 साल तक रोज Git इस्तेमाल किया, और मुझे यह सच में नापसंद था। हमें जिसकी जरूरत थी और हम ज्यादातर इसे जैसे इस्तेमाल करते थे, उसके मुकाबले यह अजीब हद तक जरूरत से ज्यादा जटिल था, और ज्यादातर लोगों के लिए यह distributed version control system नहीं बल्कि Github-केंद्रित, centralized server-based tool था
    यह मजेदार है कि कई Git users नहीं जानते कि British English में git का मतलब “चिड़चिड़ा, असहयोगी और बेकार व्यक्ति” भी होता है। एक tool के रूप में Git को यह अच्छी तरह बयान करता है
    हालांकि मैंने कोई और version control system इस्तेमाल नहीं किया है, इसलिए तुलना में कमजोर हूँ। Jujutsu को Google पर खोजना भी मुश्किल है, और docs भी मुझ जैसे लोगों के बजाय ज्यादा अनुभवी version control users के लिए लिखे लगते हैं

    • मुझे लगता है Torvalds ने git सच में इसलिए चुना था क्योंकि इसका मतलब असभ्य और चिड़चिड़ा व्यक्ति होता है