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