Sometimes I ran across a GitHub merge request of a gem where it was not completely obvious in which version the change was released. This might be the case for a bugfix PR that you want to add to your project.
Git can help you to find the next git tag that was set in the branch. This usually has the name of the version in it (as the
rake release task automatically creates a git tag during release).
git name-rev --tags <commit ref>
The more commonly used
git describecommand will return the last tag before a commit,
git name-revthe next tag after the commit:
$ git describe 54a28b1 v184.108.40.206-104-g54a28b18b4 $ git name-rev --tags 54a28b1 54a28b1 tags/v6.1.5~8
Here is a simplified example to showcase this:
f5ef0dc o │ │ Make sure allowed image processing arguments are correctly loaded 5341053 o─┴─┘ <v6.1.5> Preparing for 6.1.5 release <=== this releases the commit we need c67e8d8 o Merge pull request #44641 from SkipKayhil/fix-rubocop-errors 1afe117 o Update CHANGELOG [ci skip] 87528db o Revert "Merge pull request #43209 from mpestov/check-basic-auth-credentials" b10c0ff M─┐ Merge branch '6-1-sec' into 6-1-stable 6607333 │ o <v220.127.116.11> Preparing for 18.104.22.168 release 1f66424 │ o bumping version b0b5eaf │ o Added image trasnformation validation via configurable allow-list 13cdd7a o │ Fix typo in net-smtp error check a12ba30 M─│─┐ Merge pull request #44600 from rails/rm-handle-mail-in-3.1 06ac69f │ │ o Handle net-smtp mail dependency error for Ruby 3.1 97064aa o─│─┘ Fix logger format with Ruby 3.1 54a28b1 o │ Support dalli 3.2.1 <=== we need this commit bd5188b o │ Fix flakey Memcache tests ... 923d91e M─│─┐ Merge branch '6-1-sec' into 6-1-stable 10a2c77 │ o─┘ <v22.214.171.124> Preparing for 126.96.36.199 release
Imagine, we're looking for the release that adds support for
dalli 3.2.1. The commit sha is
54a28b1. We can ask git to give the name of this commit in relation to the next tag assigned:
$ git name-rev --tags 54a28b1 54a28b1 tags/v6.1.5~8
The gem release we're looking for is
6.1.5. The rest of the string
~8 means, that the dalli commit is 8 commits before the gem release.
From the example git log it's still relatively easy to see, which version was released after the commit, but a git log might be a lot longer and a lot more complicated.