[PATCH] summary: adds a phase line (draft, secret) to the output

Gilles Moris gilles.moris at free.fr
Thu May 14 15:48:03 UTC 2015


# HG changeset patch
# User Gilles Moris <gilles.moris at free.fr>
# Date 1431617918 -7200
#      Thu May 14 17:38:38 2015 +0200
# Node ID 2ba8141dc322ef544159f82ab1fc2a3cb9920a08
# Parent  297ea0df75d0f7ab552fc8986d04c8196de8d9dd
summary: adds 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 drafts, Y secrets

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: (all public)

On the other hand, nothing will be printed if quiet is in action.

diff -r 297ea0df75d0 -r 2ba8141dc322 mercurial/commands.py
--- a/mercurial/commands.py	Wed May 06 15:58:14 2015 -0700
+++ b/mercurial/commands.py	Thu May 14 17:38:38 2015 +0200
@@ -5998,6 +5998,13 @@
         ui.write(_('update: %d new changesets, %d branch heads (merge)\n') %
                  (new, len(bheads)))
 
+    draft = len(repo.revs('draft()'))
+    secret = len(repo.revs('secret()'))
+    if draft or secret:
+        ui.status(_('phases: %d drafts, %d secrets\n') % (draft, secret))
+    else:
+        ui.note(_('phases: (all public)\n'))
+
     cmdutil.summaryhooks(ui, repo)
 
     if opts.get('remote'):
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-backout.t
--- a/tests/test-backout.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-backout.t	Thu May 14 17:38:38 2015 +0200
@@ -42,6 +42,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 commit option
 
@@ -69,6 +70,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 4 drafts, 0 secrets
 
   $ echo ypples > a
   $ hg commit -d '5 0' -m ypples
@@ -83,6 +85,7 @@
   branch: default
   commit: 1 unresolved (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
 file that was removed is recreated
 (this also tests that editor is not invoked if the commit message is
@@ -110,6 +113,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 backout of backout is as if nothing happened
 
@@ -124,6 +128,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 4 drafts, 0 secrets
 
 across branch
 
@@ -144,6 +149,7 @@
   branch: default
   commit: (clean)
   update: 1 new changesets (update)
+  phases: 2 drafts, 0 secrets
 
 should fail
 
@@ -160,6 +166,7 @@
   branch: default
   commit: (clean)
   update: 1 new changesets, 2 branch heads (merge)
+  phases: 3 drafts, 0 secrets
 
 should fail
 
@@ -172,6 +179,7 @@
   branch: default
   commit: (clean)
   update: 1 new changesets, 2 branch heads (merge)
+  phases: 3 drafts, 0 secrets
 
 backout with merge
 
@@ -189,6 +197,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
 
 remove line 1
 
@@ -213,6 +222,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
 check line 1 is back
 
@@ -241,6 +251,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 without --merge
   $ hg backout -d '3 0' 1 --tool=true
@@ -258,6 +269,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 with --merge
   $ hg backout --merge -d '3 0' 1 --tool=true
@@ -302,6 +314,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
 backout of merge should fail
 
@@ -332,6 +345,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 6 drafts, 0 secrets
 
   $ hg rollback
   repository tip rolled back to revision 4 (undo commit)
@@ -344,6 +358,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
   $ hg backout -d '6 0' --parent 3 4 --tool=true
   removing c
@@ -354,6 +369,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 6 drafts, 0 secrets
 
   $ cd ..
 
@@ -394,6 +410,7 @@
   branch: branch2
   commit: 1 removed
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 with --merge
 (this also tests that editor is invoked if '--edit' is specified
@@ -424,6 +441,7 @@
   branch: branch2
   commit: 1 removed (merge)
   update: (current)
+  phases: 4 drafts, 0 secrets
   $ hg update -q -C 2
 
 on branch2 with branch1 not merged, so file1 should still exist:
@@ -440,6 +458,7 @@
   branch: branch2
   commit: (clean)
   update: 1 new changesets, 2 branch heads (merge)
+  phases: 4 drafts, 0 secrets
 
 on branch2 with branch1 merged, so file1 should be gone:
 
@@ -458,6 +477,7 @@
   branch: branch2
   commit: (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
 on branch1, so no file1 and file2:
 
@@ -474,6 +494,7 @@
   branch: branch1
   commit: (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
   $ cd ..
 
@@ -553,6 +574,7 @@
   branch: default
   commit: 1 unresolved (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
   $ hg resolve --all --debug
   picked tool 'internal:merge' for foo (binary False symlink False)
   merging foo
@@ -570,6 +592,7 @@
   branch: default
   commit: 1 modified, 1 unknown
   update: (current)
+  phases: 3 drafts, 0 secrets
   $ cat foo
   one
   two
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-bisect.t
--- a/tests/test-bisect.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-bisect.t	Thu May 14 17:38:38 2015 +0200
@@ -190,6 +190,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 32 drafts, 0 secrets
   $ hg bisect -g 1
   Testing changeset 16:a2e6ea4973e9 (30 changesets remaining, ~4 tests)
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-bookmarks.t
--- a/tests/test-bookmarks.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-bookmarks.t	Thu May 14 17:38:38 2015 +0200
@@ -393,6 +393,7 @@
   bookmarks: *Z Y x  y
   commit: (clean)
   update: 1 new changesets, 2 branch heads (merge)
+  phases: 3 drafts, 0 secrets
 
 test id
 
@@ -538,6 +539,7 @@
   bookmarks: *Z Y x  y
   commit: 1 added, 1 unknown (new branch head)
   update: 2 new changesets (update)
+  phases: 5 drafts, 0 secrets
   $ hg update
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   updating bookmark Z
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-commit-amend.t
--- a/tests/test-commit-amend.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-commit-amend.t	Thu May 14 17:38:38 2015 +0200
@@ -72,6 +72,7 @@
   branch: default
   commit: 1 added, 1 unknown
   update: (current)
+  phases: 2 drafts, 0 secrets
   $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit --amend
   transaction abort!
   rollback completed
@@ -83,6 +84,7 @@
   branch: default
   commit: 1 added, 1 unknown
   update: (current)
+  phases: 2 drafts, 0 secrets
 
 Add new file:
   $ hg ci --amend -m 'amend base1 new file'
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-commit-interactive.t
--- a/tests/test-commit-interactive.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-commit-interactive.t	Thu May 14 17:38:38 2015 +0200
@@ -81,6 +81,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
 
 Rename empty file
 
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-copy.t
--- a/tests/test-copy.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-copy.t	Thu May 14 17:38:38 2015 +0200
@@ -19,6 +19,7 @@
   branch: default
   commit: 1 copied
   update: (current)
+  phases: 1 drafts, 0 secrets
   $ hg --debug commit -m "2"
   committing files:
   b
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-histedit-edit.t
--- a/tests/test-histedit-edit.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-histedit-edit.t	Thu May 14 17:38:38 2015 +0200
@@ -246,6 +246,7 @@
   branch: default
   commit: 1 added (new branch head)
   update: 1 new changesets (update)
+  phases: 7 drafts, 0 secrets
   hist:   1 remaining (histedit --continue)
 
 (test also that editor is invoked if histedit is continued for
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-histedit-no-change.t
--- a/tests/test-histedit-no-change.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-histedit-no-change.t	Thu May 14 17:38:38 2015 +0200
@@ -183,6 +183,7 @@
   branch: default
   commit: 1 added, 1 unknown (new branch head)
   update: 6 new changesets (update)
+  phases: 7 drafts, 0 secrets
   hist:   2 remaining (histedit --continue)
 
   $ hg histedit --abort 2>&1 | fixbundle
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-import.t
--- a/tests/test-import.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-import.t	Thu May 14 17:38:38 2015 +0200
@@ -990,6 +990,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 2 drafts, 0 secrets
 
   $ hg diff --git -c tip
   diff --git a/lib/place-holder b/lib/place-holder
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-largefiles-misc.t
--- a/tests/test-largefiles-misc.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-largefiles-misc.t	Thu May 14 17:38:38 2015 +0200
@@ -228,6 +228,7 @@
   branch: default
   commit: 1 subrepos
   update: (current)
+  phases: 2 drafts, 0 secrets
   $ hg st
   $ hg st -S
   A subrepo/large.txt
@@ -245,6 +246,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
   $ echo "rev 2" > subrepo/large.txt
   $ hg st -S
   M subrepo/large.txt
@@ -254,6 +256,7 @@
   branch: default
   commit: 1 subrepos
   update: (current)
+  phases: 3 drafts, 0 secrets
   $ hg ci -m "this commit should fail without -S"
   abort: uncommitted changes in subrepository 'subrepo'
   (use --subrepos for recursive commit)
@@ -567,6 +570,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
   largefiles: (no remote repo)
 
 check messages when there is no files to upload:
@@ -581,6 +585,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
   largefiles: (no files to upload)
   $ hg -R clone2 outgoing --large
   comparing with $TESTTMP/issue3651/src (glob)
@@ -608,6 +613,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 2 drafts, 0 secrets
   largefiles: 1 entities for 1 files to upload
   $ hg -R clone2 outgoing --large
   comparing with $TESTTMP/issue3651/src (glob)
@@ -643,6 +649,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
   largefiles: 1 entities for 3 files to upload
   $ hg -R clone2 outgoing --large -T "{rev}:{node|short}\n"
   comparing with $TESTTMP/issue3651/src (glob)
@@ -692,6 +699,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 6 drafts, 0 secrets
   largefiles: 3 entities for 3 files to upload
   $ hg -R clone2 outgoing --large -T "{rev}:{node|short}\n"
   comparing with $TESTTMP/issue3651/src (glob)
@@ -750,6 +758,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 6 drafts, 0 secrets
   largefiles: 2 entities for 1 files to upload
   $ hg -R clone2 outgoing --large -T "{rev}:{node|short}\n"
   comparing with $TESTTMP/issue3651/src (glob)
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-largefiles.t
--- a/tests/test-largefiles.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-largefiles.t	Thu May 14 17:38:38 2015 +0200
@@ -67,6 +67,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 2 drafts, 0 secrets
   largefiles: (no remote repo)
 
 Commit preserved largefile contents.
@@ -999,6 +1000,7 @@
   branch: default
   commit: (clean)
   update: 7 new changesets (update)
+  phases: 8 drafts, 0 secrets
 
   $ rm "${USERCACHE}"/*
   $ hg clone --all-largefiles -u 1 a a-clone1
@@ -1021,6 +1023,7 @@
   branch: default
   commit: (clean)
   update: 6 new changesets (update)
+  phases: 8 drafts, 0 secrets
 
   $ rm "${USERCACHE}"/*
   $ hg clone --all-largefiles -U a a-clone-u
@@ -1030,6 +1033,7 @@
   branch: default
   commit: (clean)
   update: 8 new changesets (update)
+  phases: 8 drafts, 0 secrets
 
 Show computed destination directory:
 
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-merge1.t
--- a/tests/test-merge1.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-merge1.t	Thu May 14 17:38:38 2015 +0200
@@ -40,6 +40,7 @@
   branch: default
   commit: (interrupted update)
   update: 1 new changesets (update)
+  phases: 2 drafts, 0 secrets
   $ rmdir b
   $ hg up
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -49,6 +50,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 2 drafts, 0 secrets
 
 Prepare a basic merge
 
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-obsolete.t
--- a/tests/test-obsolete.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-obsolete.t	Thu May 14 17:38:38 2015 +0200
@@ -164,6 +164,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
   remote: 3 outgoing
 
   $ hg summary --remote --hidden
@@ -172,6 +173,7 @@
   branch: default
   commit: (clean)
   update: 3 new changesets, 4 branch heads (merge)
+  phases: 6 drafts, 0 secrets
   remote: 3 outgoing
 
 check that various commands work well with filtering
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-phases.t
--- a/tests/test-phases.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-phases.t	Thu May 14 17:38:38 2015 +0200
@@ -242,6 +242,25 @@
   1 0 B
   0 0 A
 
+Test summary
+
+  $ hg summary -R clone-dest --verbose
+  parent: -1:000000000000  (no revision checked out)
+  branch: default
+  commit: (clean)
+  update: 5 new changesets (update)
+  phases: (all public)
+  $ hg summary -R initialrepo
+  parent: 7:17a481b3bccb tip
+   merge B' and E
+  branch: default
+  commit: (clean)
+  update: 1 new changesets, 2 branch heads (merge)
+  phases: 3 drafts, 3 secrets
+  $ hg summary -R initialrepo --quiet
+  parent: 7:17a481b3bccb tip
+  update: 1 new changesets, 2 branch heads (merge)
+
 Test revset
 
   $ cd initialrepo
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-rebase-parameters.t
--- a/tests/test-rebase-parameters.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-rebase-parameters.t	Thu May 14 17:38:38 2015 +0200
@@ -476,6 +476,7 @@
   branch: default
   commit: 1 modified, 1 unresolved (merge)
   update: (current)
+  phases: 3 drafts, 0 secrets
   rebase: 0 rebased, 1 remaining (rebase --continue)
 
   $ hg resolve -l
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-rename.t
--- a/tests/test-rename.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-rename.t	Thu May 14 17:38:38 2015 +0200
@@ -20,6 +20,7 @@
   branch: default
   commit: 1 renamed
   update: (current)
+  phases: 1 drafts, 0 secrets
   $ hg status -C
   A d2/c
     d1/d11/a1
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-revert.t
--- a/tests/test-revert.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-revert.t	Thu May 14 17:38:38 2015 +0200
@@ -360,6 +360,7 @@
   branch: default
   commit: 2 modified, 1 removed (merge)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 clarifies who added what
 
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-shelve.t
--- a/tests/test-shelve.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-shelve.t	Thu May 14 17:38:38 2015 +0200
@@ -782,6 +782,7 @@
   bookmarks: *test
   commit: 2 unknown (clean)
   update: (current)
+  phases: 5 drafts, 0 secrets
 
   $ hg shelve --delete --stat
   abort: options '--delete' and '--stat' may not be used together
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-strip.t
--- a/tests/test-strip.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-strip.t	Thu May 14 17:38:38 2015 +0200
@@ -526,6 +526,7 @@
   branch: default
   commit: 1 modified, 1 unknown, 1 unresolved
   update: (current)
+  phases: 2 drafts, 0 secrets
   mq:     3 unapplied
 
   $ echo c > b
@@ -553,6 +554,7 @@
   branch: default
   commit: 1 modified, 1 unknown
   update: (current)
+  phases: 1 drafts, 0 secrets
   mq:     3 unapplied
 
 Strip adds, removes, modifies with --keep
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-subrepo-svn.t
--- a/tests/test-subrepo-svn.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-subrepo-svn.t	Thu May 14 17:38:38 2015 +0200
@@ -72,6 +72,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 2 drafts, 0 secrets
   $ hg ci -moops
   nothing changed
   [1]
@@ -96,6 +97,7 @@
   branch: default
   commit: 1 modified, 1 subrepos
   update: (current)
+  phases: 2 drafts, 0 secrets
   $ hg commit --subrepos -m 'Message!' | grep -v Updating
   committing subrepository s
   Sending*s/alpha (glob)
@@ -136,6 +138,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
   $ echo a > s/a
 
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-subrepo.t
--- a/tests/test-subrepo.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-subrepo.t	Thu May 14 17:38:38 2015 +0200
@@ -38,6 +38,7 @@
   branch: default
   commit: 1 added, 1 subrepos
   update: (current)
+  phases: 1 drafts, 0 secrets
   $ hg ci -m1
 
 test handling .hgsubstate "added" explicitly.
@@ -83,6 +84,7 @@
   branch: default
   commit: 1 subrepos
   update: (current)
+  phases: 2 drafts, 0 secrets
   $ hg co -C 1
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg sum
@@ -91,6 +93,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 2 drafts, 0 secrets
 
 commands that require a clean repo should respect subrepos
 
@@ -113,6 +116,7 @@
   branch: default
   commit: 1 subrepos
   update: (current)
+  phases: 2 drafts, 0 secrets
   $ hg ci -m2
   committing subrepository s
   committing subrepository s/ss (glob)
@@ -122,6 +126,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 3 drafts, 0 secrets
 
 test handling .hgsubstate "modified" explicitly.
 
diff -r 297ea0df75d0 -r 2ba8141dc322 tests/test-url-rev.t
--- a/tests/test-url-rev.t	Wed May 06 15:58:14 2015 -0700
+++ b/tests/test-url-rev.t	Thu May 14 17:38:38 2015 +0200
@@ -101,6 +101,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 4 drafts, 0 secrets
   remote: 2 outgoing
   $ hg -q outgoing '../clone#foo'
   2:faba9097cad4
@@ -110,6 +111,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 4 drafts, 0 secrets
   remote: 1 outgoing
 
   $ hg -q --cwd ../clone incoming '../repo#foo'
@@ -282,6 +284,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
   remote: 1 outgoing
 
   $ hg summary --remote --config paths.default='../clone#foo' --config paths.default-push='../clone'
@@ -290,6 +293,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
   remote: 2 outgoing
 
   $ hg summary --remote --config paths.default='../clone' --config paths.default-push='../clone#foo'
@@ -298,6 +302,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
   remote: 1 outgoing
 
   $ hg clone -q -r 0 . ../another
@@ -311,6 +316,7 @@
   branch: default
   commit: (clean)
   update: (current)
+  phases: 1 drafts, 0 secrets
   remote: 1 outgoing
 
   $ cd ..


More information about the Mercurial-devel mailing list