A git post-commit hook for tagging my subed.el release version
Posted: - Modified: | git, emacs, subed
P t
to push the tags from Magit, or call git push --tags
from the command-line. Since I'm using a postcommit hook, I'm not sure followTags will kick in for that. Hmm…
Debian uses Git repository tags to notice when to update packages. I kept forgetting to tag subed's versions, so now I made a git post-commit hook which I think will do the trick. I based it on https://gist.github.com/ajmirsky/1245103, just updated for Python 3 and tweaked to work with how I do versions in subed.el. I've also added it to my README.org.
#!/usr/bin/python # place in .git/hooks/post-commit # Based on https://gist.github.com/ajmirsky/1245103 import subprocess import re print("checking for version change...",) output = subprocess.check_output(['git', 'diff', 'HEAD^', 'HEAD', '-U0']).decode("utf-8") version_info = None for d in output.split("\n"): rg = re.compile(r'\+(?:;;\s+)?Version:\s+(?P<major>[0-9]+)\.(?P<minor>[0-9]+)\.(?P<rev>[0-9]+)') m = rg.search(d) if m: version_info = m.groupdict() break if version_info: tag = "v%s.%s.%s" % (version_info['major'], version_info['minor'], version_info['rev']) existing = subprocess.check_output(['git', 'tag']).decode("utf-8").split("\n") if tag in existing: print("%s is already tagged, not updating" % tag) else: result = subprocess.run(['git', 'tag', '-f', tag]) if result.returncode: raise Exception('tagging not successful: %s %s' % (result.stdout, result.returncode)) print("tagged revision: %s" % tag) else: print("none found.")
View or add comments (Disqus), or e-mail me at sacha@sachachua.com