Trying to figure out how long time was spent in a commit in a Git post-commit hook.
I\'ve got a post-commit git hook that submits information over an API about the c
Been doing some research and found that git log --name-only -n1
is the best approach. It's not difficult to get the min. and max. timestamps out of the files by doing a bit of string matching and using the Python os.stat
module.
As a general solution it still isn't great because the modification times on the files doesn't really reflect the reality of the time spent actually.
When writing scripts around git, you should try to stick to the plumbing commands — their format is less likely to change and easier to parse. Here is a command which outputs the names of the paths which changed in a commit:
git diff-tree -r --name-only --no-commit-id <tree-ish>
That aside, you may wish to examine the index, as it contains timestamps about when the files were staged, which might give you an extra edge; however, I don’t believe there is a way to access this information.