Calculating major.minor.patch from commit hash
- From
- Martin Vejnár <vejnar.martin@gmail.com>
- Date
- Feb 13, 2020, 14:40 UTC
- Message-ID
- <CAJFfRmt65DV5bZa5yTvg9sDb8SS8dFFyX7Zm23T7mAHL58v1Lw@mail.gmail.com>
I'd like my releases to have major.minor.patch version number. While increments of major.minor are something one has to do manually, I don't want to do that for patch.
So I was thinking of having a VERSION file in the repo containing major.minor and then calculate patch at the given commit C automatically as the length of the longest path starting at C in the subgraph containing only commits in which VERSION is the same as C's.
I can do that pretty easily right now by
* identifying commits in which VERSION changes with `git log -- VERSION` and then * walking the graph in topo order with `git log --format=format:"%H %P"`.
The latter step can terminate early, so it doesn't have to walk the entire repo, but the latter walks everything and can be quite slow.
Is there a more efficient way to do this?
If not, would there be an interest in a new builtin (git-depth?) that would calculate the value?
-- Martin