Le 11/08/2017 à 08:50, Davide Cavallari a écrit : > Please help me understand how this command works. There is one case in the > linux kernel repository that puzzles me. Let's consider patch "drm/i915/ > execlists: Reset RING registers upon resume" [1]. This patch was committed 641 > commits after version 4.8-rc2: > > ~$ git describe bafb2f7d4755bf1571bd5e9a03b97f3fc4fe69ae > v4.8-rc2-641-gbafb2f7d4755 > > So I would expect to find it in version 4.8-rc3 and later versions. > > However, if I search for the tag that follows (and hence contains) that > commit, I do not find version 4.8-rc3, nor version 4.8, nor version 4.9, but > 4.10-rc1: > > ~$ git describe --contains bafb2f7d4755bf1571bd5e9a03b97f3fc4fe69ae > v4.10-rc1~154^2~44^2~178 > > Why? Why not v4.8-rc3? This means that the patch has been included neither in > v4.8 nor in v4.9, but only in version 4.10-rc1, right? Why so much time was > needed, considering it was the 621st commit on top ov v4.8-rc2? Because it was not in v4.8-rc3. This probably means it was applied on a branch that started from somewhere between 4.8-rc2 and 4.8-rc3 but it was only merge into master after v4.9 was released > > BTW, what are the numbers 154^2~44^2~178 that follow the tag name? This is due to merges. You have basically a roadmap to go up the ancestry graph. ~154 means 154 commit before the tag ^2 means the 2nd parent of this commit. and so on... The format is detailed (among other tings) in man gitrevisions Nicolas