Node.js 提交时如何获取git提交消息?
提交时如何获取git提交消息?我用哈士奇 我已经尝试在准备提交消息时获取提交消息 pacakgejsonNode.js 提交时如何获取git提交消息?,node.js,git,npm,husky,Node.js,Git,Npm,Husky,提交时如何获取git提交消息?我用哈士奇 我已经尝试在准备提交消息时获取提交消息 pacakgejson { ... "version": "0.1.0", "private": true, ... "husky": { "hooks": { "pre-commit": "lint-staged", "prepare-commit-msg": "cd ../tweet-git && node index.js" }
{
...
"version": "0.1.0",
"private": true,
...
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"prepare-commit-msg": "cd ../tweet-git && node index.js"
}
},
...
}
tweet git/index.js
require('child_process').exec('git rev-list --format=%s --max-count=1 HEAD', function(err, stdout) {
const stdoutArray = stdout.split('\n')
let commitMessage = `【tweet-git】\nプロジェクト: 「project」にcommitしました\n`
commitMessage += stdoutArray[1]
console.log('commitMessage', commitMessage);
});
stdout将是未定义的。请帮帮我,谢谢你的思路是对的,但这里有几件事似乎不对劲
git rev list--format=%s--max count=1 HEAD
)将从上次提交中获取消息,而不是当前正在进行的提交。如果您正在进行第一次提交,那么这将是未定义的
,如果您的最终目标是使用当前提交消息,那么这可能不是您想要使用的git rev list
或git log
,也不能使用任何读回之前提交的内容。看看Husky,它看起来也不会将消息作为参数传递,大多数人建议通过Husky的set环境变量
获取存储消息的文件路径,然后使用FS读取它(链接:,)tweet git/index.js
,应该使用当前提交消息:
const fs=require('fs');
const path=require('path');
//调整它以匹配git回购的根,
//下面的代码假设git root是`/tweet git之上的一个dir`
常量gitRootDir=uu dirname+'/../';
const messageFile=path.normalize(gitRootDir+'/'+process.env.HUSKY_GIT_PARAMS.split('')[0]);
让commitMessage=`【推特git】\nプロジェクト: 「计划」に犯罪しました\n`
commitMessage+=fs.readFileSync(messageFile,{encoding:'utf-8'});
log('commitMessage',commitMessage);
请注意关于需要调整gitRootDir的警告;Husky提供的路径是相对于git初始化文件夹的根目录的,而不是绝对路径,因此您当前的设置需要进行一些调整。这就是为什么大多数人将package.json
放在项目根级别,然后在脚本中,不要使用cd脚本和&node my git hook.js
,他们只使用node脚本/my git hook.js
它正在工作。我能听懂留言。谢谢你的资料。