Random notes from a security-aware software engineer, open-source advocate and occasional lecturer.
For one project of mine, I needed to know all tags from a remote git repository.
If the repository is on one of the larger platforms like Bitbucket or Github,
you could possibly use their REST API to get these data. Of course, it was
hosted somewhere else. There is also always the solution of cloning the
repository and using
git tag but that might be very slow and you have a lot
of data lying around which you do not need.
git can also get tags from remote repositories. You can use
sort -V to do the job:
git ls-remote --tags ...url.git \ | sed -n 's_^.*/\([^/}]*\)$_\1_p' \ | sort -V
Note that I’m dropping all tag references and assume that the tag names do
} characters. But that should usually be no problem.
Also, make sure that you have a recent version of
sort that supports sorting
of version numbers.
Often, I want only the releases (no RCs, betas, …) for which I use a slightly modified
git ls-remote -t ...url.git \ | sed -n 's_^.*/\([0-9\.]*\)$_\1_p' \ | sort -V
As an example, this would list all Opencast releases:
% git ls-remote -t https://bitbucket.org/opencast-community/matterhorn.git \ | sed -n 's_^.*/\([0-9\.]*\)$_\1_p' \ | sort -V 1.3.0 1.3.1 ... 2.1.1 2.1.2 2.2.0