Release-notes.py script to generate release notes and add contributors to authors.md
This commit is contained in:
parent
3a0855e65a
commit
3935f9dae6
|
@ -0,0 +1,38 @@
|
||||||
|
Zcash Contributors
|
||||||
|
==================
|
||||||
|
|
||||||
|
Jack Grigg (264)
|
||||||
|
Simon Liu (191)
|
||||||
|
Sean Bowe (162)
|
||||||
|
Taylor Hornby (65)
|
||||||
|
Daira Hopwood (62)
|
||||||
|
Kevin Gallagher (38)
|
||||||
|
Jay Graber (28)
|
||||||
|
Nathan Wilcox (10)
|
||||||
|
Wladimir J. van der Laan (9)
|
||||||
|
Pieter Wuille (8)
|
||||||
|
Cory Fields (7)
|
||||||
|
ITH4Coinomia (4)
|
||||||
|
David Mercer (4)
|
||||||
|
4ZEC (4)
|
||||||
|
Patrick Strateman (3)
|
||||||
|
Paige Peterson (3)
|
||||||
|
MarcoFalke (3)
|
||||||
|
Alfie John (3)
|
||||||
|
aniemerg (2)
|
||||||
|
Robert C. Seacord (2)
|
||||||
|
Joe Turgeon (2)
|
||||||
|
Gregory Maxwell (2)
|
||||||
|
kazcw (1)
|
||||||
|
fanquake (1)
|
||||||
|
Tom Ritter (1)
|
||||||
|
S. Matthew English (1)
|
||||||
|
Philip Kaufmann (1)
|
||||||
|
Louis Nyffenegger (1)
|
||||||
|
Lars-Magnus Skog (1)
|
||||||
|
Gaurav Rana (1)
|
||||||
|
Ethan Heilman (1)
|
||||||
|
Chirag Davé (1)
|
||||||
|
Cameron Boehmer (1)
|
||||||
|
Bryan Stitt (1)
|
||||||
|
Alex (1)
|
|
@ -1,19 +1,18 @@
|
||||||
Jack Grigg:
|
Jack Grigg (4):
|
||||||
Equihash: Only compare the first n/(k+1) bits when sorting.
|
Equihash: Only compare the first n/(k+1) bits when sorting.
|
||||||
Randomise the nonce in the block header.
|
Randomise the nonce in the block header.
|
||||||
Clear mempool before using it for benchmark test, fix parameter name.
|
Clear mempool before using it for benchmark test, fix parameter name.
|
||||||
Fix memory leak in large tx benchmark.
|
Fix memory leak in large tx benchmark.
|
||||||
|
|
||||||
Sean Bowe:
|
Sean Bowe (5):
|
||||||
Increase block size to 2MB and update performance test.
|
Increase block size to 2MB and update performance test.
|
||||||
Make sigop limit `20000` just as in Bitcoin, ignoring our change to the blocksize limit.
|
Make sigop limit `20000` just as in Bitcoin, ignoring our change to the blocksize limit.
|
||||||
Remove the mainnet checkpoints.
|
Remove the mainnet checkpoints.
|
||||||
Fix performance test for block verification.
|
Fix performance test for block verification.
|
||||||
Make `validatelargetx` test more accurate.
|
Make `validatelargetx` test more accurate.
|
||||||
|
|
||||||
Taylor Hornby:
|
Taylor Hornby (1):
|
||||||
Add example mock test of CheckTransaction.
|
Add example mock test of CheckTransaction.
|
||||||
|
|
||||||
aniemerg:
|
aniemerg (1):
|
||||||
Suppress Libsnark Debugging Info.
|
Suppress Libsnark Debugging Info.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
Sean Bowe (6):
|
||||||
Sean Bowe:
|
|
||||||
Change memo field size and relocate `ciphertexts` field of JoinSplit description.
|
Change memo field size and relocate `ciphertexts` field of JoinSplit description.
|
||||||
Implement zkSNARK compression.
|
Implement zkSNARK compression.
|
||||||
Perform curve parameter initialization at start of gtest suite.
|
Perform curve parameter initialization at start of gtest suite.
|
||||||
|
@ -7,7 +6,7 @@ Sean Bowe:
|
||||||
Enable MONTGOMERY_OUTPUT everywhere.
|
Enable MONTGOMERY_OUTPUT everywhere.
|
||||||
Update proving/verifying keys.
|
Update proving/verifying keys.
|
||||||
|
|
||||||
Jack Grigg:
|
Jack Grigg (11):
|
||||||
Add support for spending keys to the basic key store.
|
Add support for spending keys to the basic key store.
|
||||||
Merge AddSpendingKeyPaymentAddress into AddSpendingKey to simplify API.
|
Merge AddSpendingKeyPaymentAddress into AddSpendingKey to simplify API.
|
||||||
Add methods for byte array expansion and compression.
|
Add methods for byte array expansion and compression.
|
||||||
|
@ -20,7 +19,7 @@ Jack Grigg:
|
||||||
Add separate lock for SpendingKey key store operations.
|
Add separate lock for SpendingKey key store operations.
|
||||||
Test conversion between solution indices and minimal representation.
|
Test conversion between solution indices and minimal representation.
|
||||||
|
|
||||||
Daira Hopwood:
|
Daira Hopwood (6):
|
||||||
Move bigint arithmetic implementations to libsnark.
|
Move bigint arithmetic implementations to libsnark.
|
||||||
Add mostly-static checks on consistency of Equihash parameters, MAX_HEADERS_RESULTS, and MAX_PROTOCOL_MESSAGE_LENGTH.
|
Add mostly-static checks on consistency of Equihash parameters, MAX_HEADERS_RESULTS, and MAX_PROTOCOL_MESSAGE_LENGTH.
|
||||||
Change some asserts in equihash.cpp to be static.
|
Change some asserts in equihash.cpp to be static.
|
||||||
|
@ -28,30 +27,29 @@ Daira Hopwood:
|
||||||
Increment version numbers for z9 release.
|
Increment version numbers for z9 release.
|
||||||
Add these release notes for z9.
|
Add these release notes for z9.
|
||||||
|
|
||||||
Taylor Hornby:
|
Taylor Hornby (5):
|
||||||
Disable hardening when building for coverage reports.
|
Disable hardening when building for coverage reports.
|
||||||
Upgrade libsodium for AVX2-detection bugfix.
|
Upgrade libsodium for AVX2-detection bugfix.
|
||||||
Fix inconsistent optimization flags; single source of truth.
|
Fix inconsistent optimization flags; single source of truth.
|
||||||
Add -fwrapv -fno-strict-aliasing; fix libzcash flags.
|
Add -fwrapv -fno-strict-aliasing; fix libzcash flags.
|
||||||
Use libsodium's s < L check, instead checking that libsodium checks that.
|
Use libsodium's s < L check, instead checking that libsodium checks that.
|
||||||
|
|
||||||
Simon Liu:
|
Simon Liu (3):
|
||||||
Fixes #1193 so that during verification benchmarking it does not unncessarily create thousands of CTransaction objects.
|
Fixes #1193 so that during verification benchmarking it does not unncessarily create thousands of CTransaction objects.
|
||||||
Closes #701 by adding documentation about the Payment RPC interface.
|
Closes #701 by adding documentation about the Payment RPC interface.
|
||||||
Add note about zkey and encrypted wallets.
|
Add note about zkey and encrypted wallets.
|
||||||
|
|
||||||
Gaurav Rana:
|
Gaurav Rana (1):
|
||||||
Update zcash-cli stop message.
|
Update zcash-cli stop message.
|
||||||
|
|
||||||
Tom Ritter:
|
Tom Ritter (1):
|
||||||
Clarify comment about nonce space for Note Encryption.
|
Clarify comment about nonce space for Note Encryption.
|
||||||
|
|
||||||
Robert C. Seacord:
|
Robert C. Seacord (1):
|
||||||
Memory safety and correctness fixes found in NCC audit.
|
Memory safety and correctness fixes found in NCC audit.
|
||||||
|
|
||||||
Patrick Strateman (merged by Taylor Hornby):
|
Patrick Strateman (1):
|
||||||
Pull in some DoS mitigations from upstream. (#1258)
|
Pull in some DoS mitigations from upstream. (#1258)
|
||||||
|
|
||||||
Wladimir J. van der Laan:
|
Wladimir J. van der Laan (1):
|
||||||
net: correctly initialize nMinPingUsecTime.
|
net: correctly initialize nMinPingUsecTime.
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,12 @@ ITH4Coinomia (2):
|
||||||
S. Matthew English (1):
|
S. Matthew English (1):
|
||||||
enforcing consistency 'tor' to 'Tor'
|
enforcing consistency 'tor' to 'Tor'
|
||||||
|
|
||||||
Sean Bowe (1):
|
Sean Bowe (2):
|
||||||
Write R1CS output to file in GenerateParams.
|
Write R1CS output to file in GenerateParams.
|
||||||
|
1.0.2 release.
|
||||||
|
|
||||||
Simon (4):
|
Simon Liu (4):
|
||||||
Fixes #1762 segfault when miner is interrupted.
|
Fixes #1762 segfault when miner is interrupted.
|
||||||
Fixes #1779 so that sending to multiple zaddrs no longer fails.
|
Fixes #1779 so that sending to multiple zaddrs no longer fails.
|
||||||
Add GenIdentity, an identity function for MappedShuffle.
|
Add GenIdentity, an identity function for MappedShuffle.
|
||||||
Add transaction size and zaddr output limit checks to z_sendmany.
|
Add transaction size and zaddr output limit checks to z_sendmany.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
import re, sys, os, os.path
|
||||||
|
import subprocess
|
||||||
|
import argparse
|
||||||
|
from itertools import islice
|
||||||
|
from operator import itemgetter
|
||||||
|
|
||||||
|
author_aliases = {
|
||||||
|
'Simon': 'Simon Liu',
|
||||||
|
'bitcartel': 'Simon Liu',
|
||||||
|
'EthanHeilman': 'Ethan Heilman',
|
||||||
|
}
|
||||||
|
|
||||||
|
def apply_author_aliases(name):
|
||||||
|
if name in author_aliases:
|
||||||
|
return author_aliases[name]
|
||||||
|
else:
|
||||||
|
return name
|
||||||
|
|
||||||
|
def parse_authors(line):
|
||||||
|
commit_search = re.search('(\d+)', line)
|
||||||
|
if commit_search:
|
||||||
|
commits = commit_search.group(1)
|
||||||
|
else:
|
||||||
|
commits = 0
|
||||||
|
name = re.sub(' \(\d+\)|:|\n|\r\n$', '', line)
|
||||||
|
return name, commits
|
||||||
|
|
||||||
|
def alias_authors_in_release_notes(line):
|
||||||
|
for key in author_aliases:
|
||||||
|
if re.match(key, line):
|
||||||
|
line = line.replace(key, author_aliases[key])
|
||||||
|
break
|
||||||
|
return line
|
||||||
|
|
||||||
|
## Returns dict of {'author': #_of_commits} from a release note
|
||||||
|
def authors_in_release_notes(filename):
|
||||||
|
note = os.path.join(doc_dir, 'release-notes', filename)
|
||||||
|
with open(note, 'r') as f:
|
||||||
|
authors = {}
|
||||||
|
line = f.readline()
|
||||||
|
first_name, commits = parse_authors(line)
|
||||||
|
authors[apply_author_aliases(first_name)] = commits
|
||||||
|
for line in f:
|
||||||
|
if line in ['\n', '\r\n']:
|
||||||
|
for author in islice(f, 1):
|
||||||
|
name, commits = parse_authors(author)
|
||||||
|
authors[apply_author_aliases(name)] = commits
|
||||||
|
return authors
|
||||||
|
|
||||||
|
## Sums commits made by contributors in each Zcash release note in ./doc/release-notes and writes to authors.md
|
||||||
|
def document_authors():
|
||||||
|
print "Writing contributors documented in release-notes directory to authors.md."
|
||||||
|
authors_file = os.path.join(doc_dir, 'authors.md')
|
||||||
|
with open(authors_file, 'w') as f:
|
||||||
|
f.write('Zcash Contributors\n==================\n\n')
|
||||||
|
total_contrib = {}
|
||||||
|
for notes in os.listdir(os.path.join(doc_dir, 'release-notes')):
|
||||||
|
authors = authors_in_release_notes(notes)
|
||||||
|
for author in authors:
|
||||||
|
commits = int(authors[author])
|
||||||
|
if author in total_contrib:
|
||||||
|
total_contrib[author] += commits
|
||||||
|
else:
|
||||||
|
total_contrib[author] = commits
|
||||||
|
sorted_contrib = sorted(total_contrib.items(), key=itemgetter(1, 0), reverse=True)
|
||||||
|
for n, c in sorted_contrib:
|
||||||
|
if c != 0:
|
||||||
|
f.write("{0} ({1})\n".format(n, c))
|
||||||
|
|
||||||
|
## Writes release note to ./doc/release-notes based on git shortlog when current version number is specified
|
||||||
|
def generate_release_note(version, filename):
|
||||||
|
print "Automatically generating release notes for {0} from git shortlog. Should review {1} for accuracy.".format(version, filename)
|
||||||
|
prev_tag = subprocess.Popen(['git describe --abbrev=0 v{0}^'.format(version)], shell=True, stdout=subprocess.PIPE).communicate()[0].strip()
|
||||||
|
print "Previous release tag: ", prev_tag
|
||||||
|
notes = subprocess.Popen(['git shortlog --no-merges {0}..v{1}'.format(prev_tag, version)], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
|
||||||
|
lines = notes.split('\n')
|
||||||
|
lines = [alias_authors_in_release_notes(line) for line in lines]
|
||||||
|
release_note = os.path.join(doc_dir, 'release-notes', 'release-notes-{0}.md'.format(version))
|
||||||
|
with open(release_note, 'w') as f:
|
||||||
|
f.writelines('\n'.join(lines))
|
||||||
|
|
||||||
|
def main(version, filename):
|
||||||
|
if version != None:
|
||||||
|
generate_release_note(version, filename)
|
||||||
|
document_authors()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('--version')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
||||||
|
doc_dir = os.path.join(root_dir, 'doc')
|
||||||
|
version = None
|
||||||
|
filename = None
|
||||||
|
if args.version:
|
||||||
|
version = args.version
|
||||||
|
filename = 'release-notes-{0}.md'.format(version)
|
||||||
|
main(version, filename)
|
Loading…
Reference in New Issue