comparison mercurial/commands.py @ 25111:1ef96a3b8b89

summary: add a phase line (draft, secret) to the output The number of draft and secret changesets are currently not summarized. This is an important information because the number of drafts give some rough idea of the number of outgoing changesets in typical workflows, without needing to probe a remote repository. And a non-zero number of secrets means that those changeset will not be pushed. If the repository is "dirty" - some draft or secret changesets exists - then summary will display a line like: phases: X draft, Y secret (public) The phase in parenthesis corresponds to the highest phase of the parents of the working directory, i.e. the current phase. By default, the line is not printed if the repository is "clean" - all changesets are public - but if verbose is activated, it will display: phases: (public) On the other hand, nothing will be printed if quiet is in action. A few tests have been added in test-phases.t to cover the -v and -q cases.
author Gilles Moris <gilles.moris@free.fr>
date Thu, 14 May 2015 17:38:38 +0200
parents e30b66bb7d4d
children 49c583ca48c4
comparison
equal deleted inserted replaced
25110:c9f382c8233a 25111:1ef96a3b8b89
5867 [('', 'remote', None, _('check for push and pull'))], '[--remote]') 5867 [('', 'remote', None, _('check for push and pull'))], '[--remote]')
5868 def summary(ui, repo, **opts): 5868 def summary(ui, repo, **opts):
5869 """summarize working directory state 5869 """summarize working directory state
5870 5870
5871 This generates a brief summary of the working directory state, 5871 This generates a brief summary of the working directory state,
5872 including parents, branch, commit status, and available updates. 5872 including parents, branch, commit status, phase and available updates.
5873 5873
5874 With the --remote option, this will check the default paths for 5874 With the --remote option, this will check the default paths for
5875 incoming and outgoing changes. This can be time-consuming. 5875 incoming and outgoing changes. This can be time-consuming.
5876 5876
5877 Returns 0 on success. 5877 Returns 0 on success.
5994 ui.write(_('update: %d new changesets (update)\n') % new) 5994 ui.write(_('update: %d new changesets (update)\n') % new)
5995 else: 5995 else:
5996 # i18n: column positioning for "hg summary" 5996 # i18n: column positioning for "hg summary"
5997 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') % 5997 ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
5998 (new, len(bheads))) 5998 (new, len(bheads)))
5999
6000 t = []
6001 draft = len(repo.revs('draft()'))
6002 if draft:
6003 t.append(_('%d draft') % draft)
6004 secret = len(repo.revs('secret()'))
6005 if secret:
6006 t.append(_('%d secret') % secret)
6007
6008 if parents:
6009 parentphase = max(p.phase() for p in parents)
6010 else:
6011 parentphase = phases.public
6012
6013 if draft or secret:
6014 ui.status(_('phases: %s (%s)\n') % (', '.join(t),
6015 phases.phasenames[parentphase]))
6016 else:
6017 ui.note(_('phases: (%s)\n') % phases.phasenames[parentphase])
5999 6018
6000 cmdutil.summaryhooks(ui, repo) 6019 cmdutil.summaryhooks(ui, repo)
6001 6020
6002 if opts.get('remote'): 6021 if opts.get('remote'):
6003 needsincoming, needsoutgoing = True, True 6022 needsincoming, needsoutgoing = True, True