changeset 36248:5c9bdfb32eac

manifest: add support for including directories outside narrowspec When using tree manifests and the client doesn't have a directory, we have two choices for what to do with "hg manifest" output: 1) ignore the directory, and 2) include the directory (not files within it). For "hg files", we decided to ignore the directories (and files) outside the narrowspec. If we choose to not include directories outside the narrowspec, then I think we should also make sure we don't include files outside the narrowspec. I also think we should add --outside-narrow flag (or other name). Thus, whichever way we go, I think we should have a way of displaying paths (files or directories) outside the narrowspec. For that we'll need to handle the 't' flag that narrowhg uses, and that's what this patch adds support for. Differential Revision: https://phab.mercurial-scm.org/D2235
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 13 Feb 2018 14:15:29 -0800
parents 2ad527f7d27a
children 30cc9f9780df
files mercurial/commands.py tests/test-narrow-commit.t
diffstat 2 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Tue Feb 13 13:50:24 2018 -0800
+++ b/mercurial/commands.py	Tue Feb 13 14:15:29 2018 -0800
@@ -3491,8 +3491,8 @@
     if not node:
         node = rev
 
-    char = {'l': '@', 'x': '*', '': ''}
-    mode = {'l': '644', 'x': '755', '': '644'}
+    char = {'l': '@', 'x': '*', '': '', 't': 'd'}
+    mode = {'l': '644', 'x': '755', '': '644', 't': '755'}
     if node:
         repo = scmutil.unhidehashlikerevs(repo, [node], 'nowarn')
     ctx = scmutil.revsingle(repo, node)
--- a/tests/test-narrow-commit.t	Tue Feb 13 13:50:24 2018 -0800
+++ b/tests/test-narrow-commit.t	Tue Feb 13 14:15:29 2018 -0800
@@ -77,12 +77,20 @@
 
   $ hg update -q 'desc("initial")'
   $ echo modified2 > inside/f1
+  $ hg manifest --debug
+  4d6a634d5ba06331a60c29ee0db8412490a54fcd 644   inside/f1
+  7fb3bb6356d28d4dc352c5ba52d7350a81b6bd46 644   outside/f1 (flat !)
+  d0f2f706468ab0e8bec7af87446835fb1b13511b 755 d outside/ (tree !)
   $ hg commit -m 'modify inside/f1'
   created new head
   $ hg files -r .
   inside/f1
   outside/f1 (flat !)
   outside/ (tree !)
+  $ hg manifest --debug
+  3f4197b4a11b9016e77ebc47fe566944885fd11b 644   inside/f1
+  7fb3bb6356d28d4dc352c5ba52d7350a81b6bd46 644   outside/f1 (flat !)
+  d0f2f706468ab0e8bec7af87446835fb1b13511b 755 d outside/ (tree !)
 Some filesystems (notably FAT/exFAT only store timestamps with 2
 seconds of precision, so by sleeping for 3 seconds, we can ensure that
 the timestamps of files stored by dirstate will appear older than the