首頁  >  文章  >  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