Mercurial > hgsubversion
diff hgsubversion/hooks/updatemeta.py @ 919:92bd7b3678ea
Add a changegroup hook to update svn metadata
author | Brad Hall <bhall@fb.com> |
---|---|
date | Thu, 07 Jun 2012 16:29:05 -0700 |
parents | |
children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/hgsubversion/hooks/updatemeta.py @@ -0,0 +1,31 @@ +# Mercurial hook to update/rebuild svn metadata if there are svn changes in +# the incoming changegroup. +# +# To install, add the following to your hgrc: +# [hooks] +# changegroup = python:hgsubversion.hooks.updatemeta.hook + +from mercurial import node + +import hgsubversion +import hgsubversion.util +import hgsubversion.svncommands + +def hook(ui, repo, **kwargs): + updatemeta = False + startrev = repo[node.bin(kwargs["node"])].rev() + # Check each rev until we find one that contains svn metadata + for rev in xrange(startrev, len(repo)): + svnrev = hgsubversion.util.getsvnrev(repo[rev]) + if svnrev and svnrev.startswith("svn:"): + updatemeta = True + break + + if updatemeta: + try: + hgsubversion.svncommands.updatemeta(ui, repo, args=[]) + ui.status("Updated svn metadata\n") + except Exception, e: + ui.warn("Failed to update svn metadata: %s" % str(e)) + + return False