如何自动将提交邮件详细信息添加到签入文件位置

时间:2017-01-02 12:27:14

标签: git

我正在使用Git作为版本控制系统 我们要求将提交消息添加到新文件中并放在父文件夹中。

例如:如果新文件放在/pr/ab/cd/ef/a.java位置。应该创建一个文件并将其与提交消息一起放在文件夹中,并且#34; ef"。

我曾尝试使用钩子来达到这个目的,但它无法正常工作。

我在commit-msg / pre-commit-msg模板中使用过它,如下所示。

列出未跟踪的文件 - >

 <a style="display: block;"></a>

当使用git bash而不是hooks创建shell脚本时,这很正常。

我正在尝试使用TortoiseGit添加/提交任何新的签到时自动完成此工作。

请指导我。

1 个答案:

答案 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 它将再次提交到最后一次提交。

注意:如果特定目录有更改,则这些目录将添加一个版本文件。