我正在使用Git作为版本控制系统
我们要求将提交消息添加到新文件中并放在父文件夹中。
例如:如果新文件放在/pr/ab/cd/ef/a.java位置。应该创建一个文件并将其与提交消息一起放在文件夹中,并且#34; ef"。
我曾尝试使用钩子来达到这个目的,但它无法正常工作。
我在commit-msg / pre-commit-msg模板中使用过它,如下所示。
列出未跟踪的文件 - >
<a style="display: block;"></a>
当使用git bash而不是hooks创建shell脚本时,这很正常。
我正在尝试使用TortoiseGit添加/提交任何新的签到时自动完成此工作。
请指导我。
答案 0 :(得分:3)
我终于设法找到了一个post-commit钩子并根据我的要求进行了修改,它完美无缺。
#!/bin/sh
path="D:/temp.txt"
git diff HEAD~1 --name-only > ${path}
if ! test ${GIT_BYPASS_POST_COMMIT+set}
then
export GIT_BYPASS_POST_COMMIT=1
for line in `cat $path`; do
if [[ ! $line =~ version.txt ]];then
file_path=`dirname $line`
git show --format=%B -s | cut -d '#' -f2 > ${file_path}/version.txt
echo " - " >> ${file_path}/version.txt
echo $line >> ${file_path}/version.txt
git add ${file_path}/version.txt
fi
done
git commit --amend -C HEAD
fi
最初它将捕获提交期间更改的所有文件,并将保存到文件中。
现在,这将读取文件列表中除version.txt文件之外的每个文件,并添加包含 "commit message - file name"
的version.txt
它将再次提交到最后一次提交。
注意:如果特定目录有更改,则这些目录将添加一个版本文件。