首页  >  文章  >  web前端  >  GenAI Git 提交

GenAI Git 提交

WBOY
WBOY原创
2024-08-28 06:08:33970浏览

GenAI Git Commits

生成 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

此命令将运行脚本,并指导您完成使用 AI 生成和提交 Git 消息的过程,使您的提交内容更加丰富且一致。

您可以将此命令包装在 gcm.sh 文件中或 package.json 中的包脚本部分中:

{
    "devDependencies": {
        "@inquirer/prompts": "...",
        "genaiscript": "..."
    },
    "scripts": {
        "gcm": "genaiscript run gcm"
    }
}

然后您可以使用以下命令运行脚本:

npm run gcm

致谢

这个脚本的灵感来自于 Karpathy 的提交消息生成器。

以上是GenAI Git 提交的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn