Skip to content
This repository has been archived by the owner on Feb 22, 2018. It is now read-only.

Commit

Permalink
feat(scripts): robust authors.sh
Browse files Browse the repository at this point in the history
- Determine the latest two semver release tags by sorting them.
- Dedupe author names using BOTH their e-mail address and their name.
  This ensures that the following two entries dedupe into one.
  - Matias Niemelä (Matias Niemela\xcc\x88)
  - Matias Niemelä (Matias Niemel\xc3\xa4)

Closes #586
  • Loading branch information
chirayuk authored and mhevery committed Feb 20, 2014
1 parent c09745b commit ffe43c6
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion scripts/changelog/authors.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,23 @@

LAST_TAG=`git tag | grep ^v | tail -n1`

git log v0.9.3..HEAD | grep Author | sort | uniq | sed 's/Author: \(.*\) \<.*/\1/' | tr "\\n" ", " | sed 's/,$/\n/' | sed 's/\,/, /g'
# Determine the lastest two versions sorting the semvers correctly.
REV_RANGE=$(git tag -l | python -c '
import sys, re
version_re = re.compile(r"^(.*/)?(v[0-9.]+)$")
key = lambda m: tuple(map(int, m.group(2)[1:].split(".")))
matches = sorted(dict(
(key(m), m) for m in map(version_re.search, sys.stdin) if m).items())
print "%s..%s" % (matches[-2][1].group(0), matches[-1][1].group(0))
')

echo $REV_RANGE

# Canonicalize by BOTH e-mail address and by name.
# e.g. Matias Niemelä (Matias Niemela\xcc\x88) and
# Matias Niemelä (Matias Niemel\xc3\xa4) are the same.
git log --pretty=tformat:'%ae %an' "$REV_RANGE" | python -c '
import sys
authors = set(dict(line.split(" ", 1) for line in sys.stdin).values())
print ", ".join(sorted(authors)).replace("\n", "")
'

0 comments on commit ffe43c6

Please sign in to comment.