Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run script before commit and include the update in this commit?

Tags:

git

githooks

I wrote a script that generates Readme.md file (for GitHub) by scanning the source code. Everytime before I make a new commit, I run this script manually to update Readme.md. It sure would be better if this job being done automatically.

Currently I'm using pre-commit git hook, which works only partly. The Readme.md file gets updated, however the update is not part of this commit. I have to include it in the next commit.

Is there a way to run this script and make the update part of this commit?

like image 334
Yu Hao Avatar asked May 21 '15 14:05

Yu Hao


1 Answers

According to this SO thread (Can a Git hook automatically add files to the commit?), git add won't work on pre-commit hook with recent version of git.

As a workaround, you can play with pre-commit and post-commit hooks to generate your Readme.md then commit it after your commit with post-commit hook then ammend the second commit with yours.

Not's my idea, follow the links for original explanations.

Answer by @bitluck on the thread I linked :

Touch a file .commit or something. (be sure to add this to .gitignore)

#!/bin/sh 
echo 
touch .commit 
exit

if .commit exists you know a commit has just taken place but a post-commit hasn't run yet. So, you can do your code generation here. Additionally, test for .commit and if it exists:

  • add the files
  • commit --amend -C HEAD --no-verify (avoid looping)
  • delete .commit file

    #!/bin/sh
    echo
    if [ -a .commit ]
    then
      rm .commit
      git add yourfile
      git commit --amend -C HEAD --no-verify
    fi
    exit
    
like image 50
Blackus Avatar answered Oct 18 '22 04:10

Blackus