गिट कमिट संदेश जनरेट करना डेवलपर्स के लिए तुरंत एक क्लासिक जेनएआई एप्लिकेशन बन गया है।
इसमें मदद करने के लिए, हम एक GenAIScript स्क्रिप्ट तैयार करेंगे।
स्क्रिप्ट एक नियमित नोड.जेएस स्वचालन स्क्रिप्ट के रूप में कार्य करती है और runPrompt का उपयोग करती है
एलएलएम को कॉल जारी करने और उपयोगकर्ता से जेनरेट किए गए टेक्स्ट की पुष्टि करने के लिए कहें।
स्क्रिप्ट @inquirer/prompts से आवश्यक फ़ंक्शन आयात करके शुरू होती है:
import { select, input, confirm } from "@inquirer/prompts"
इन फ़ंक्शन का उपयोग उपयोगकर्ता के साथ बातचीत करने के लिए किया जाएगा, उनसे कार्यों या इनपुट डेटा की पुष्टि करने के लिए कहा जाएगा।
इसके बाद, हम जाँचते हैं कि क्या Git रिपॉजिटरी में कोई चरणबद्ध परिवर्तन हैं:
let { stdout } = await host.exec("git", ["diff", "--cached"])
यदि कोई परिवर्तन चरणबद्ध नहीं है, तो हम उपयोगकर्ता से पूछते हैं कि क्या वे सभी परिवर्तन चरणबद्ध करना चाहते हैं। यदि उपयोगकर्ता पुष्टि करता है, तो हम सभी परिवर्तन चरणबद्ध करते हैं। अन्यथा, हम बच जाते हैं।
const stage = await confirm({ message: "No staged changes. Stage all changes?", default: true, }) if (stage) { await host.exec("git", ["add", "."]) stdout = (await host.exec("git", ["diff", "--cached"])).stdout } if (!stdout) cancel("no staged changes")
हम चरणबद्ध परिवर्तनों का उपयोग करके एक प्रारंभिक प्रतिबद्ध संदेश उत्पन्न करते हैं:
message = ( await runPrompt( (_) => { _.def("GIT_DIFF", stdout, { maxTokens: 20000 }) _.$`GIT_DIFF is a diff of all staged changes, coming from the command: \`\`\` git diff --cached \`\`\` Please generate a concise, one-line commit message for these changes. - do NOT add quotes` }, { cache: false, temperature: 0.8 } ) ).text
उपरोक्त त्वरित कॉन्फ़िगरेशन इंगित करता है कि संदेश संक्षिप्त होना चाहिए,
"git diff --cached" आउटपुट से संबंधित, और इसमें उद्धरण शामिल नहीं होने चाहिए।
उपयोगकर्ता चुनता है कि जेनरेट किए गए संदेश के साथ कैसे आगे बढ़ना है:
choice = await select({ message, choices: [ { name: "commit", value: "commit", description: "accept message and commit" }, ... ], })
संदेश को संपादित करने या पुन: उत्पन्न करने के लिए विकल्प दिए गए हैं। यदि उपयोगकर्ता संदेश को संपादित करना चुनता है, तो हम उनसे एक नया संदेश इनपुट करने के लिए कहते हैं:
if (choice === "edit") { message = await input({ message: "Edit commit message", required: true, }) choice = "commit" }
यदि उपयोगकर्ता संदेश भेजना चुनता है, तो हम परिवर्तन करते हैं:
if (choice === "commit" && message) { console.log((await host.exec("git", ["commit", "-m", message])).stdout) }
आप इस स्क्रिप्ट को सीएलआई का उपयोग करके चला सकते हैं।
genaiscript run gcm
चूंकि यह @inquirer/prompts पैकेज का उपयोग करता है, इसलिए आपको पहले इस पैकेज को इंस्टॉल करना होगा:
npm install --save-dev @inquirer/prompts
यदि आप एनपीएक्स का उपयोग कर रहे हैं,
npx -p @inquirer/prompts genaiscript -p genaiscript -- genaiscript run gcm
यह कमांड स्क्रिप्ट चलाएगा, और एआई का उपयोग करके एक गिट संदेश बनाने और प्रतिबद्ध करने की प्रक्रिया के माध्यम से आपका मार्गदर्शन करेगा, जिससे आपकी प्रतिबद्धताएं अधिक जानकारीपूर्ण और सुसंगत हो जाएंगी।
आप इस कमांड को gcm.sh फ़ाइल में या package.json में अपने पैकेज स्क्रिप्ट अनुभाग में लपेट सकते हैं:
{ "devDependencies": { "@inquirer/prompts": "...", "genaiscript": "..." }, "scripts": { "gcm": "genaiscript run gcm" } }
फिर आप स्क्रिप्ट का उपयोग करके चला सकते हैं:
npm run gcm
यह स्क्रिप्ट कारपैथी के प्रतिबद्ध संदेश जनरेटर से प्रेरित थी।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3