]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env bash | |
2 | ||
3 | set -eu | |
4 | set -o pipefail | |
5 | ||
6 | dir="$1" | |
7 | tag="$2" | |
8 | fallback="$3" | |
9 | ||
10 | if [ -n "$tag" ]; then | |
11 | echo "$tag" | |
12 | exit 0 | |
13 | fi | |
14 | ||
15 | # Apparently git describe has a bug where it always considers the work-tree | |
16 | # dirty when invoked with --git-dir (even though 'git status' is happy). Work | |
17 | # around this issue by cd-ing to the source directory. | |
18 | cd "$dir" | |
19 | # Check that we have either .git/ (a normal clone) or a .git file (a work-tree) | |
20 | # and that we don't get confused if a tarball is extracted in a higher-level | |
21 | # git repository. | |
22 | [ -e .git ] && git describe --abbrev=7 --dirty=+ 2>/dev/null | sed 's/^v//' || echo "$fallback" |