Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I've recently had a similar idea for when you want to track metrics of a Git repository over time (code size, line count, etc).

I would love to create some a script to take a measurement of the current tree, then run a tool that runs my script at ~every commit so I can draw a graph of how the metric changes over time.

It's a bit tricky: if you change the script, you need to re-run the analysis at every commit. It starts looking a little bit like a build system, but integrated over time.

I've thought of calling this GitReduce or similar, since it has some similarity to MapReduce: first a "map" step runs at every commit, then the "reduce" step combines all of the individual outputs into a single graph or whatever.

Ideally Git itself could be the only storage engine, so you can trivially serve the results from GitHub.



git provides a couple of options for running a script against the code for every commit


Even without built in options, writing a for-loop over the result of git log or rev-list is more or less two lines of scripting. Same with a walk over rev-parse HEAD^.

Then you also have git bisect but that's more for finding when some metric started to show anomalies.


Would that be git for-each-ref [1] or something different?

[1]: https://git-scm.com/docs/git-for-each-ref


Commits are not refs, only the head of a branch (or tag) is a ref.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: