mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-14 20:03:54 +01:00
Cache get_version_string.
The version of a module isn't going to change over the lifetime of the process (assuming no funky hot reloading is going on, which it isn't), so let's just cache the result to avoid spawning lots of git subprocesses. Fixes #5672.
This commit is contained in:
parent
f337d2f0f0
commit
5ea773c505
1 changed files with 21 additions and 2 deletions
|
@ -22,6 +22,23 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
def get_version_string(module):
|
||||
"""Given a module calculate a git-aware version string for it.
|
||||
|
||||
If called on a module not in a git checkout will return `__verison__`.
|
||||
|
||||
Args:
|
||||
module (module)
|
||||
|
||||
Returns:
|
||||
str
|
||||
"""
|
||||
|
||||
cached_version = getattr(module, "_synapse_version_string_cache", None)
|
||||
if cached_version:
|
||||
return cached_version
|
||||
|
||||
version_string = module.__version__
|
||||
|
||||
try:
|
||||
null = open(os.devnull, "w")
|
||||
cwd = os.path.dirname(os.path.abspath(module.__file__))
|
||||
|
@ -80,8 +97,10 @@ def get_version_string(module):
|
|||
s for s in (git_branch, git_tag, git_commit, git_dirty) if s
|
||||
)
|
||||
|
||||
return "%s (%s)" % (module.__version__, git_version)
|
||||
version_string = "%s (%s)" % (module.__version__, git_version)
|
||||
except Exception as e:
|
||||
logger.info("Failed to check for git repository: %s", e)
|
||||
|
||||
return module.__version__
|
||||
module._synapse_version_string_cache = version_string
|
||||
|
||||
return version_string
|
||||
|
|
Loading…
Reference in a new issue