[PATCH 17 of 27 clfilter V2] largefile: status is buggy on repoproxy. Run it unfiltered

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Oct 8 16:38:08 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1349712716 -7200
# Node ID 7a735d5b7f77e83cd3ef4b83f1e5634360a37818
# Parent  fe4fd85ce72a171264b9ded32b3490b9b873db6f
largefile: status is buggy on repoproxy. Run it unfiltered

For some (yet) unkown reason, largefile status does not works on repoproxy. As
status is not affected by filtering, we run it unfiltered.


Na'Tosha Bard view on this issue is:

    "but, well, largefiles status is kind of an unholy piece of code"

diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -1052,6 +1052,9 @@
 # Calling purge with --all will cause the largefiles to be deleted.
 # Override repo.status to prevent this from happening.
 def overridepurge(orig, ui, repo, *dirs, **opts):
+    # XXX large file status is buggy when used on repo proxy.
+    # XXX this needs to be investigate.
+    repo = repo.unfiltered()
     oldstatus = repo.status
     def overridestatus(node1='.', node2=None, match=None, ignored=False,
                         clean=False, unknown=False, listsubrepos=False):
diff --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py
--- a/hgext/largefiles/reposetup.py
+++ b/hgext/largefiles/reposetup.py
@@ -14,6 +14,7 @@
 from mercurial import context, error, manifest, match as match_, util
 from mercurial import node as node_
 from mercurial.i18n import _
+from mercurial import localrepo
 
 import lfcommands
 import proto
@@ -88,6 +89,9 @@
         # appropriate list in the result. Also removes standin files
         # from the listing. Revert to the original status if
         # self.lfstatus is False.
+        # XXX large file status is buggy when used on repo proxy.
+        # XXX this needs to be investigate.
+        @localrepo.unfilteredmeth
         def status(self, node1='.', node2=None, match=None, ignored=False,
                 clean=False, unknown=False, listsubrepos=False):
             listignored, listclean, listunknown = ignored, clean, unknown


More information about the Mercurial-devel mailing list