D2235: manifest: add support for including directories outside narrowspec

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Tue Feb 13 22:49:02 UTC 2018


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

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/commands.py
  tests/test-narrow-commit.t

CHANGE DETAILS

diff --git a/tests/test-narrow-commit.t b/tests/test-narrow-commit.t
--- a/tests/test-narrow-commit.t
+++ b/tests/test-narrow-commit.t
@@ -72,12 +72,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
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3502,8 +3502,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)



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


More information about the Mercurial-devel mailing list