在预提交挂钩期间再次暂存文件?

Staging again files during pre-commit hook?

我已经在预提交挂钩中安装了 mvn java-formatter:format 任务。此任务将格式化 java 源代码。

pushd src/ > /dev/null

mvn java-formatter:format
RETVAL=$?
if (($RETVAL == 1)); then
        exit 1
fi

popd > /dev/null

我需要附加新格式化的源文件才能提交。我该怎么做?

pre-commit hook应该可以包含一个git add,来修改即将提交的索引。

参见示例“git pre-commit hook, add file into index”。

尝试 git add -A :/.(参见“Add as if from the root folder of the repository”)

如果您只需要添加已经暂存的文件,那么您需要:

  • 或者 add files per pattern
  • 或过滤器 only the staged files,如 git add $(git diff --name-only --cached).

可以做到这一点,但需要一个棘手的脚本。

在这里您可以找到已解决的相同问题。在那里,它在每次提交时更新文件版本,而不是格式化代码。它正在全面运作: https://github.com/addonszz/Galileo/tree/master/githooks

然后您只需用 'Formatting Code' 算法替换文件 'updateVersion.sh' 上的 'Version File Replacement' 算法。也许您需要更改一些内容,例如删除分支限制,因为只有在 'develop' 分支上,脚本才会运行。

此外,它只会更改文件(如果暂存)。如果文件没有暂存,那么它什么都不做。更准确地说,它会打印出每一步都在做什么。