Skip to content
Browse files

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

This follows commits 80f4487 and 01399fa; 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 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.
  • Loading branch information...
1 parent c6a711d commit f07735c619c121d8785082972acd8fbad8b236af @loic loic committed
Showing with 10 additions and 2 deletions.
  1. +10 −2 django/utils/
12 django/utils/
@@ -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():
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

0 comments on commit f07735c

Please sign in to comment.
Something went wrong with that request. Please try again.