Создание сообщения о фиксации git быстро стало классическим приложением GenAI для разработчиков.
Чтобы помочь в этом, мы создадим скрипт GenAIScript.
Скрипт действует как обычный скрипт автоматизации node.js и использует runPrompt
выполнить вызов LLM и попросить пользователя подтвердить сгенерированный текст.
Скрипт начинается с импорта необходимых функций из @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) }
Вы можете запустить этот скрипт с помощью CLI.
genaiscript run gcm
Поскольку он использует пакет @inquirer/prompts, вам необходимо сначала установить этот пакет:
npm install --save-dev @inquirer/prompts
Если вы используете npx,
npx -p @inquirer/prompts genaiscript -p genaiscript -- genaiscript run gcm
Эта команда запустит скрипт и проведет вас через процесс создания и фиксации сообщения Git с использованием искусственного интеллекта, что сделает ваши коммиты более информативными и последовательными.
Вы можете обернуть эту команду в файл gcm.sh или в раздел сценария вашего пакета в package.json:
{ "devDependencies": { "@inquirer/prompts": "...", "genaiscript": "..." }, "scripts": { "gcm": "genaiscript run gcm" } }
Затем вы можете запустить скрипт, используя:
npm run gcm
Этот скрипт был вдохновлен генератором сообщений о коммитах Karpathy.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3