diff --git a/hgext3rd/smartlog.py b/hgext3rd/smartlog.py --- a/hgext3rd/smartlog.py +++ b/hgext3rd/smartlog.py @@ -52,6 +52,15 @@ from mercurial import node as nodemod from mercurial.i18n import _ +logcmdutil_major = 4 +logcmdutil_minor = 6 +fake_semver = r"^(?P[0-9])\.(?P[0-9])" +semver = re.match(fake_semver, util.version()) +if semver: + if int(semver.group("major")) >= logcmdutil_major \ + and int(semver.group("minor")) >= logcmdutil_minor: + from mercurial import logcmdutil + cmdtable = {} command = registrar.command(cmdtable) testedwith = 'ships-with-fb-hgext' @@ -127,8 +136,15 @@ self.ui.write('\n') return res - extensions.wrapfunction(cmdutil.changeset_printer, '_show', show) - extensions.wrapfunction(cmdutil.changeset_templater, '_show', show) + try: + extensions.wrapfunction(cmdutil.changeset_printer, '_show', show) + except AttributeError: + extensions.wrapfunction(logcmdutil.changesetprinter, '_show', show) + + try: + extensions.wrapfunction(cmdutil.changeset_templater, '_show', show) + except AttributeError: + extensions.wrapfunction(logcmdutil.changesettemplater, '_show', show) def ascii(orig, ui, state, type, char, text, coldata): if type == 'F': @@ -628,10 +644,18 @@ overrides[('experimental', 'graphstyle.grandparent')] = '2.' with ui.configoverride(overrides, 'smartlog'): revdag = getdag(ui, repo, revs, masterrev) - displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True) + try: + displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True) + except AttributeError: + displayer = logcmdutil.changesetdisplayer(ui, repo, opts, buffered=True) + ui.pager('smartlog') - cmdutil.displaygraph( - ui, repo, revdag, displayer, graphmod.asciiedges, None, None) + try: + cmdutil.displaygraph( + ui, repo, revdag, displayer, graphmod.asciiedges, None, None) + except AttributeError: + logcmdutil.displaygraph( + ui, repo, revdag, displayer, graphmod.asciiedges, None, None) try: with open(repo.vfs.join('completionhints'), 'w+') as f: