diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -1022,6 +1022,30 @@ def overrideoutgoing(orig, ui, repo, des return result +def summaryremotehook(ui, repo, opts, changes): + largeopt = opts.get('large', False) + if changes is None: + if largeopt: + return (False, True) # only outgoing check is needed + else: + return (False, False) + elif largeopt: + url, branch, peer, outgoing = changes[1] + if peer is None: + # i18n: column positioning for "hg summary" + ui.status(_('largefiles: (no remote repo)\n')) + return + + toupload = set() + lfutil.getlfilestoupload(repo, outgoing.missing, + lambda fn, lfhash: toupload.add(fn)) + if not toupload: + # i18n: column positioning for "hg summary" + ui.status(_('largefiles: (no files to upload)\n')) + else: + # i18n: column positioning for "hg summary" + ui.status(_('largefiles: %d to upload\n') % len(toupload)) + def overridesummary(orig, ui, repo, *pats, **opts): try: repo.lfstatus = True @@ -1029,18 +1053,6 @@ def overridesummary(orig, ui, repo, *pat finally: repo.lfstatus = False - if opts.pop('large', None): - toupload = getoutgoinglfiles(ui, repo, None, **opts) - if toupload is None: - # i18n: column positioning for "hg summary" - ui.status(_('largefiles: (no remote repo)\n')) - elif not toupload: - # i18n: column positioning for "hg summary" - ui.status(_('largefiles: (no files to upload)\n')) - else: - # i18n: column positioning for "hg summary" - ui.status(_('largefiles: %d to upload\n') % len(toupload)) - def scmutiladdremove(orig, repo, pats=[], opts={}, dry_run=None, similarity=None): if not lfutil.islfilesrepo(repo): diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py --- a/hgext/largefiles/uisetup.py +++ b/hgext/largefiles/uisetup.py @@ -73,6 +73,7 @@ def uisetup(ui): overrides.overridesummary) summaryopt = [('', 'large', None, _('display outgoing largefiles'))] entry[1].extend(summaryopt) + cmdutil.summaryremotehooks.add('largefiles', overrides.summaryremotehook) entry = extensions.wrapcommand(commands.table, 'update', overrides.overrideupdate) diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t --- a/tests/test-largefiles.t +++ b/tests/test-largefiles.t @@ -2149,7 +2149,6 @@ check messages when there is no files to branch: default commit: (clean) update: (current) - searching for changes largefiles: (no files to upload) $ hg -R clone2 outgoing --large comparing with $TESTTMP/issue3651/src (glob) @@ -2172,7 +2171,6 @@ check messages when there are files to u branch: default commit: (clean) update: (current) - searching for changes largefiles: 1 to upload $ hg -R clone2 outgoing --large comparing with $TESTTMP/issue3651/src (glob)