feat(submitter): 新增自动获取git用户名并填充提交信息

扩展了提交器的自动填充能力,新增通过git config获取本地git用户名的能力,和原有邮箱获取逻辑结合,自动按照格式填充贡献者字段,优化用户提交体验
This commit is contained in:
2026-07-17 23:12:10 +08:00
parent 5730c0bfea
commit 361dad1a64
2 changed files with 54 additions and 8 deletions
+18
View File
@@ -972,6 +972,24 @@ export function registerSubmitterHandlers(
}
});
ipcMain.handle("get-git-name", async () => {
try {
const { exec } = await import("node:child_process");
const util = await import("util");
const execAsync = util.promisify(exec);
const { stdout } = await execAsync("git config user.name");
const name = stdout.trim();
logger.info({ name }, "[Submitter] Git name retrieved");
return { success: true, data: name || "" };
} catch (err) {
logger.warn(
{ err },
"[Submitter] Failed to get git name, not a git repo or git not installed",
);
return { success: false, data: "" };
}
});
ipcMain.handle("get-tags-list", async () => {
try {
const apiUrl = "https://upload.deepinos.org.cn/api/index/get_tags_list";
+36 -8
View File
@@ -1728,15 +1728,43 @@ const closeWindow = () => {
import { onMounted, nextTick } from "vue";
const getGitEmail = async () => {
const getGitInfo = async () => {
try {
const result = await window.ipcRenderer.invoke("get-git-email");
if (result?.success && result.data) {
formData.mail = result.data;
console.log("[Submitter] Git email auto-filled:", result.data);
const [nameResult, emailResult] = await Promise.all([
window.ipcRenderer.invoke("get-git-name"),
window.ipcRenderer.invoke("get-git-email"),
]);
let gitName = "";
let gitEmail = "";
if (nameResult?.success && nameResult.data) {
gitName = nameResult.data;
console.log("[Submitter] Git name auto-filled:", gitName);
}
if (emailResult?.success && emailResult.data) {
gitEmail = emailResult.data;
console.log("[Submitter] Git email auto-filled:", gitEmail);
}
// 将 git name 和 email 合并填入 contributor 字段,格式: Name <email>
if (gitName || gitEmail) {
if (gitName && gitEmail) {
formData.contributor = `${gitName} <${gitEmail}>`;
} else if (gitName) {
formData.contributor = gitName;
} else if (gitEmail) {
formData.contributor = gitEmail;
}
}
// 单独填入邮箱
if (gitEmail) {
formData.mail = gitEmail;
}
} catch (err) {
console.warn("[Submitter] Failed to get git email:", err);
console.warn("[Submitter] Failed to get git info:", err);
}
};
@@ -1744,8 +1772,8 @@ onMounted(async () => {
console.log("[Submitter] Component mounted, loading categories and tags");
// 先等待分类列表加载完成,避免后续竞态
await Promise.all([loadCategoriesList(), loadTagsList()]);
// 尝试从 git 配置读取邮箱
await getGitEmail();
// 尝试从 git 配置读取 name 和 email,填入 contributor 和 mail
await getGitInfo();
});
</script>