view hgsubversion/hooks/updatemeta.py @ 1573:bb09e8a230d6 1.9.2

wrappers: fix old versions of hg without breaking 4.6 Whoops.
author Augie Fackler <raf@durin42.com>
date Mon, 28 May 2018 13:37:15 -0400
parents 92bd7b3678ea
children
line wrap: on
line source

# 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