I found a few references to bits and pieces of this in various places, but this snippet ties all three bits of information together in a single string, and accounts for calling the path to the git repo from anywhere (which tends to work “magically” on localhost but breaks on servers).
If you don’t use git tags, season to taste.
@register.simple_tag def git_ver(): ''' Retrieve and return the latest git commit hash ID and tag as a dict. ''' git_dir = os.path.dirname(settings.BASE_DIR) try: # Date and hash ID head = subprocess.Popen( "git -C {dir} log -1 --pretty=format:\"%h on %cd\" --date=short".format(dir=git_dir), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) version = head.stdout.readline().strip().decode('utf-8') # Latest tag head = subprocess.Popen( "git -C {dir} describe --tags $(git -C {dir} rev-list --tags --max-count=1)".format(dir=git_dir), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) latest_tag = head.stdout.readline().strip().decode('utf-8') git_string = "{v}, {t}".format(v=version, t=latest_tag) except: git_string = u'unknown' return git_string
Then, in your template, you can simply:
{% if user.is_superuser %}{% git_ver %}{% endif %}
how to i use this code to commit my latest update to git.can you tell details. i really need it.thanks
neat idea. would save me from maintaining multiple version numbers, it seems.
This code has nothing to do with submitting commits to github. There are a bazillion guides on using git out there. Sorry.