D1872: directaccess: update directaccess generic message to also display obsfate

lothiraldan (Boris Feld) phabricator at mercurial-scm.org
Wed Jan 17 11:41:44 UTC 2018


lothiraldan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Display the same message we added recently to the filtered error message when
  try to do a write operation to a hidden obsolete changeset.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1872

AFFECTED FILES
  mercurial/scmutil.py
  tests/test-directaccess.t

CHANGE DETAILS

diff --git a/tests/test-directaccess.t b/tests/test-directaccess.t
--- a/tests/test-directaccess.t
+++ b/tests/test-directaccess.t
@@ -270,14 +270,18 @@
 
   $ hg writedirectaccess -r 28ad74
   warning: accessing hidden changesets for write operation: 28ad74487de9
+  hidden revision '28ad74487de9' was rewritten as: d716de383093
   RANGE [2]
 
   $ hg writedirectaccess -r 2443a0
   warning: accessing hidden changesets for write operation: 2443a0e66469
+  hidden revision '2443a0e66469' was rewritten as: d716de383093
   RANGE [3]
 
   $ hg writedirectaccess -r "28ad74:2443a0"
   warning: accessing hidden changesets for write operation: 28ad74487de9, 2443a0e66469
+  hidden revision '28ad74487de9' was rewritten as: d716de383093
+  hidden revision '2443a0e66469' was rewritten as: d716de383093
   RANGE [2, 3]
 
   $ hg writedirectaccess -r "28ad74 + 2443a0"
@@ -287,6 +291,7 @@
 
   $ hg writedirectaccess -r "28ad74:d716de"
   warning: accessing hidden changesets for write operation: 28ad74487de9
+  hidden revision '28ad74487de9' was rewritten as: d716de383093
   RANGE [2, 3, 4]
 
 Setting a bookmark will make that changeset unhidden, so this should come in end
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -1341,9 +1341,21 @@
 
     if hiddentype == 'warn':
         unfi = repo.unfiltered()
-        revstr = ", ".join([pycompat.bytestr(unfi[l]) for l in revs])
+
+        revstr = []
+        obsfatemsgs = []
+
+        for revision in revs:
+            ctx = unfi[revision]
+            revstring = pycompat.bytestr(ctx)
+            revstr.append(revstring)
+            obsfatemsgs.append(obsutil._getfilteredreason(repo, revstring, ctx))
+
         repo.ui.warn(_("warning: accessing hidden changesets for write "
-                       "operation: %s\n") % revstr)
+                       "operation: %s\n") % ", ".join(revstr))
+
+        for obsfatemsg in obsfatemsgs:
+            repo.ui.warn(obsfatemsg + "\n")
 
     # we have to use new filtername to separate branch/tags cache until we can
     # disbale these cache when revisions are dynamically pinned.



To: lothiraldan, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list