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
--- 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