在提交之前运行脚本并在此提交中包含更新?

时间:2015-05-21 14:28:55

标签: git githooks

我编写了一个脚本,通过扫描源代码生成Readme.md文件(对于GitHub)。每次在我进行新提交之前,我都会手动运行此脚本来更新Readme.md。如果这项工作自动完成,肯定会更好。

目前我正在使用pre-commit git hook,它只能部分工作。 Readme.md文件会更新,但更新不是此提交的一部分。我必须将它包含在下次提交中。

有没有办法运行此脚本并使更新成为此提交的一部分?

1 个答案:

答案 0 :(得分:3)

根据this SO thread (Can a Git hook automatically add files to the commit?)git add将无法使用最新版本的git进行预提交。

作为一种解决方法,您可以使用预提交和后提交挂钩来生成Readme.md,然后在使用post-commit挂钩提交之后提交它,然后使用您的提交修改第二次提交。

不是我的想法,请点击原始解释的链接。

通过@bitluck在我链接的主题上回答:

  

触摸文件.commit或其他内容。 (务必将其添加到.gitignore)

#!/bin/sh 
echo 
touch .commit 
exit
     

如果.commit存在,你知道提交刚刚发生,但是   post-commit还没有运行。所以,你可以在这里进行代码生成。   另外,测试.commit以及它是否存在:

     
      
  • 添加文件
  •   
  • commit --amend -C HEAD --no-verify(避免循环)
  •   
  • 删除.commit文件

    #!/bin/sh
    echo
    if [ -a .commit ]
    then
      rm .commit
      git add yourfile
      git commit --amend -C HEAD --no-verify
    fi
    exit
    
  •