D6217: remotefilelog: correctly reject wdir filenodes

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Mon Apr 8 11:00:02 EDT 2019


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

REVISION SUMMARY
  This fixes `hg grep -r 'wdir()'` when remotefilelog is enabled and the working
  directory contains uncommitted modifications.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  hgext/remotefilelog/remotefilelog.py
  tests/test-remotefilelog-blame.t

CHANGE DETAILS

diff --git a/tests/test-remotefilelog-blame.t b/tests/test-remotefilelog-blame.t
--- a/tests/test-remotefilelog-blame.t
+++ b/tests/test-remotefilelog-blame.t
@@ -35,11 +35,6 @@
 
   $ hg grep --all-files x
   x:x
-BROKEN: modifications in the wdir tries to fetch from the server.
   $ echo foo >> x
   $ hg grep --all-files x
-  remote: abort: working directory revision cannot be specified
-  1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
-  abort: error downloading file contents:
-  'connection closed early'
-  [255]
++ x:x
diff --git a/hgext/remotefilelog/remotefilelog.py b/hgext/remotefilelog/remotefilelog.py
--- a/hgext/remotefilelog/remotefilelog.py
+++ b/hgext/remotefilelog/remotefilelog.py
@@ -10,7 +10,12 @@
 import collections
 import os
 
-from mercurial.node import bin, nullid
+from mercurial.node import (
+    bin,
+    nullid,
+    wdirfilenodeids,
+    wdirid,
+)
 from mercurial.i18n import _
 from mercurial import (
     ancestor,
@@ -306,6 +311,8 @@
         if len(node) != 20:
             raise error.LookupError(node, self.filename,
                                     _('invalid revision input'))
+        if node == wdirid or node in wdirfilenodeids:
+            raise error.WdirUnsupported
 
         store = self.repo.contentstore
         rawtext = store.get(self.filename, node)



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


More information about the Mercurial-devel mailing list