Skip to contentSkip to conversation

git tag --contains <commit> -n=1 ?

DISCUSSION NODA, Kai 3 participants 4 messages Jun 15, 2016

lore
Share & tools
lore

NODA, Kai

author
#0 lore raw

Hi,
I'm thinking how to find the oldest tag containing a specified commit. Eg.

$ cd /usr/src/linux-linus/Documentation
$ for i in *.txt; do
for> echo $i
for> hash=`git log -1 --format=format:%H -- $i`
for> git tag --contains $hash -l 'v2.6.[0-9][0-9]'|head -1
for> done
DMA-API.txt
v2.6.31
DMA-ISA-LPC.txt
v2.6.20
DMA-attributes.txt
v2.6.27
...

Here I wonder whether "head -1" is generally correct or not when I want the oldest tag.
Moreover, as "git tag --contains ..." takes considerable time, I will be happy if I can set the maximum number in searching tags containing a commit. Or are there already some (better) ways to achieve this?

Any advice is welcome.

Thanks,
Kai

#1 lore raw
Quoted 2 lines · Kai

Here I wonder whether "head -1" is generally correct or not when I want the oldest tag.

Since the output of git tag is sorted by name, generally not.

Andreas.

Signature · 3 lines
Andreas Schwab, [email protected]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
author
#2 lore raw

Thank you for your reply, Andreas

Andreas Schwab wrote:
...

Quoted 4 lines
Quoted 2 lines

Here I wonder whether "head -1" is generally correct or not when I want the oldest tag.

Since the output of git tag is sorted by name, generally not.

Wow, I didn't know that.
But then, under the assumption that tags have names like verNNN, that behavior ensures me that "head -1" works as intended.

Maybe I look at its implementation ( refs.c:do_for_each_ref , right?) but this seems a tough code to comprehend, especially around packed/loose/extra ...

Thanks,
Kai

#3 lore raw
Quoted 5 lines · Kai
Quoted 1 line

Since the output of git tag is sorted by name, generally not.

Wow, I didn't know that.
But then, under the assumption that tags have names like verNNN, that behavior ensures me that "head -1" works as intended.

If that assumption does not hold, you can also sort by date. See:

http://article.gmane.org/gmane.comp.version-control.git/133586

-Peff