Author: danielsh
Date: Fri Jan 4 18:39:54 2019
New Revision: 1850419
URL: http://svn.apache.org/viewvc?rev=1850419&view=rev
Log:
site tools: Teach upcoming.py to compute a previously-hardcoded value.
* tools/upcoming.py
(get_copyfrom_revision_of_tag, SINCE): Remove.
(copyfrom_revision_of_previous_tag_of_this_stable_branch): New.
(main): Update caller.
Modified:
subversion/site/tools/upcoming.py
Modified: subversion/site/tools/upcoming.py
URL:
http://svn.apache.org/viewvc/subversion/site/tools/upcoming.py?rev=1850419&r1=1850418&r2=1850419&view=diff
==============================================================================
--- subversion/site/tools/upcoming.py (original)
+++ subversion/site/tools/upcoming.py Fri Jan 4 18:39:54 2019
@@ -16,15 +16,23 @@ import tempfile
import xml.etree.ElementTree as ET
-SINCE = '1.11.0'
SVN = os.getenv('SVN', 'svn')
LOG_SEPARATOR_LINE = ('-' * 72) + '\n'
-def get_copyfrom_revision_of_tag(version_number):
- """Given a version number, return the copyfrom revision of that release's
tag."""
- assert version_number == SINCE
- # TODO: parse and return `svn log -r0:HEAD --limit=1 --stop-on-copy
^/subversion/tags/1.11.0 -vq`
- return 1845131
+def copyfrom_revision_of_previous_tag_of_this_stable_branch():
+ """Returns the copyfrom revision of the previous tag of the stable branch
+ checked out in cwd."""
+ ### Doesn't work during the alpha/beta/rc phase; works only after 1.A.0
has been tagged
+ version_string = subprocess.check_output(['build/getversion.py', 'SVN',
'subversion/include/svn_version.h']).decode()
+ version_broken_down = list(map(int, version_string.split('.')))
+ version_broken_down[-1] -= 1
+ assert version_broken_down[-1] >= 0
+ target = '^/subversion/tags/' + '.'.join(map(str, version_broken_down))
+ log_output = \
+ subprocess.check_output(
+ [SVN, 'log', '-q', '-v', '-l1', '-rHEAD:0', '--stop-on-copy',
'--', target]
+ ).decode()
+ return int(re.compile(r'[(]from \S*:(\d+)[)]').search(log_output).group(1))
def get_merges_for_range(start, end):
"""Return an array of revision numbers in the range -r START:END that are
@@ -45,7 +53,8 @@ def get_merges_for_range(start, end):
yield logentry
def main():
- for logentry in get_merges_for_range(get_copyfrom_revision_of_tag(SINCE) +
1, "HEAD") :
+ start_revision = copyfrom_revision_of_previous_tag_of_this_stable_branch()
+ 1
+ for logentry in get_merges_for_range(start_revision, "HEAD"):
f = lambda s: logentry.findall('./' + s)[0].text
f.__doc__ = """Get the contents of the first child tag whose name is
given as an argument."""
print(LOG_SEPARATOR_LINE, end='')