现在在package.json
我设置了"precommit": "lint node internal/scripts/precommit"
,我希望在precommit.js中获取所有提交的文件路径,有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
在您的脚本中,您可以使用git
命令获取已提交文件的列表。
var cp=require('child_process')
var output=cp.execSync('cmd /c git show --pretty="" --name-only HEAD').toString()
var files=output.split('\n')
console.log(files)
files
变量将包含上次提交中所有文件的数组。
答案 1 :(得分:1)
从“Git pre-commit hook : changed/added files”开始,实际的Git命令是:
QUOTE_CREATE_DT "TO_DATE(NVL(:QUOTE_CREATE_DT, '01/01/0001'), 'MM/DD/YYYY')"
您可以看到来自templates/hooks--pre-commit.sample
的一种可能用法
它实际上也用在JavaScript Standard Style GitHub仓库中。
最后,请使用spawnSync
,如“Catching Fatal Errors with Node.js child_process
”
通过使用流程“
git diff --cached --name-only --diff-filter=ACM -z | xargs -0 ...
(或在此情况下为spawn
)方法来捕获错误而不放弃应用程序砖块的最佳方法:
spawnSync
使用此方法,您可以先检查stderr缓冲区;如果有一个字符串,你知道它出错了,如果没有错误文本,那么这个过程就干净了!
将此方法适用于您的钩子案例,并按照上面建议的那样更改其Git命令。