git tag --contains <commit> -n=1 ?
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
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."
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
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