Commit f07735c6 authored by Loic Bistuer's avatar Loic Bistuer
Browse files

Fixed #22867 -- Memoized django.utils.version.get_git_changeset().

This follows commits 80f4487d and 01399fa0; original patch had to be
reverted because it wasn't Python 2.6 compatible and we need it to
be in order to build docs on the djangoproject.com server.

This fix should be replaced by @lru_cache as soon as we drop
Python 2.6 compatibility.

Thanks Florian Apolloner for the review and Alexander Schepanovski
for the original patch.
parent c6a711d9
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -57,6 +57,10 @@ def get_git_changeset():
    This value isn't guaranteed to be unique, but collisions are very unlikely,
    so it's sufficient for generating the development version numbers.
    """
    # FIXME: Replace with @lru_cache when we upgrade the docs server to PY2.7+.
    if hasattr(get_git_changeset, 'cache'):
        return get_git_changeset.cache

    repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    git_log = subprocess.Popen('git log --pretty=format:%ct --quiet -1 HEAD',
            stdout=subprocess.PIPE, stderr=subprocess.PIPE,
@@ -65,5 +69,9 @@ def get_git_changeset():
    try:
        timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
    except ValueError:
        return None
    return timestamp.strftime('%Y%m%d%H%M%S')
        changeset = None
    else:
        changeset = timestamp.strftime('%Y%m%d%H%M%S')

    get_git_changeset.cache = changeset
    return changeset