@@ -2280,6 +2280,14 @@
# a list of (ui, repo) functions called by commands.summary
summaryhooks = util.hooks()
+# a list of (ui, repo, opts, changes) functions called by commands.summary.
+# 'changes' is a tuple of tuples below:
+# - (sourceurl, sourcebranch, sourcepeer, incoming)
+# - (desturl, destbranch, destpeer, outgoing)
+# functions should return tuple of booleans below, if 'changes' is None:
+# (whether-incomings-are-needed, whether-outgoings-are-needed)
+summaryremotehooks = util.hooks()
+
# A list of state files kept by multistep operations like graft.
# Since graft cannot be aborted, it is considered 'clearable' by update.
# note: bisect is intentionally excluded
@@ -5501,11 +5501,23 @@
needsincoming, needsoutgoing = True, True
else:
needsincoming, needsoutgoing = False, False
+ for i, o in cmdutil.summaryremotehooks(ui, repo, opts, None):
+ if i:
+ needsincoming = True
+ if o:
+ needsoutgoing = True
+ if not needsincoming and not needsoutgoing:
+ return
def getincoming():
source, branches = hg.parseurl(ui.expandpath('default'))
sbranch = branches[0]
- other = hg.peer(repo, {}, source)
+ try:
+ other = hg.peer(repo, {}, source)
+ except error.RepoError:
+ if opts.get('remote'):
+ raise
+ return source, sbranch, None, None, None
revs, checkout = hg.addbranchrevs(repo, other, branches, None)
if revs:
revs = [other.lookup(rev) for rev in revs]
@@ -5525,8 +5537,16 @@
dbranch = branches[0]
revs, checkout = hg.addbranchrevs(repo, repo, branches, None)
if source != dest:
- dother = hg.peer(repo, {}, dest)
+ try:
+ dother = hg.peer(repo, {}, dest)
+ except error.RepoError:
+ if opts.get('remote'):
+ raise
+ return dest, dbranch, None, None
ui.debug('comparing with %s\n' % util.hidepassword(dest))
+ elif sother is None:
+ # there is no explicit destination peer, but source one is invalid
+ return dest, dbranch, None, None
else:
dother = sother
if (source != dest or (sbranch is not None and sbranch != dbranch)):
@@ -5571,6 +5591,10 @@
# i18n: column positioning for "hg summary"
ui.status(_('remote: (synced)\n'))
+ cmdutil.summaryremotehooks(ui, repo, opts,
+ ((source, sbranch, sother, commoninc),
+ (dest, dbranch, dother, outgoing)))
+
@command('tag',
[('f', 'force', None, _('force tag')),
('l', 'local', None, _('make the tag local')),