[PATCH] largefiles: enable subrepo support for remove

Matt Harbison mharbison72 at gmail.com
Fri Jan 9 04:52:11 UTC 2015


# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1419991972 18000
#      Tue Dec 30 21:12:52 2014 -0500
# Node ID 60a3c9e2b300f76297bc7832fa88cb36f031a281
# Parent  42824b273ecf46e26b4543d239ed3b3d4c9927f7
largefiles: enable subrepo support for remove

Previously, remove failed when operating on a largefile in a subrepo, stating
that the file is untracked.

diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -260,12 +260,11 @@
 
     return (result == 1 or bad) and 1 or 0
 
-def overrideremove(orig, ui, repo, *pats, **opts):
-    installnormalfilesmatchfn(repo[None].manifest())
-    result = orig(ui, repo, *pats, **opts)
-    restorematchfn()
-    matcher = scmutil.match(repo[None], pats, opts)
-    return removelargefiles(ui, repo, False, matcher, **opts) or result
+def cmdutilremove(orig, ui, repo, matcher, prefix, after, force, subrepos):
+    normalmatcher = composenormalfilematcher(matcher, repo[None].manifest())
+    result = orig(ui, repo, normalmatcher, prefix, after, force, subrepos)
+    return removelargefiles(ui, repo, False, matcher, after=after,
+                            force=force) or result
 
 def overridestatusfn(orig, repo, rev2, **opts):
     try:
diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py
--- a/hgext/largefiles/uisetup.py
+++ b/hgext/largefiles/uisetup.py
@@ -33,8 +33,7 @@
     # and in the process of handling commit -A (issue3542)
     entry = extensions.wrapfunction(scmutil, 'addremove',
                                     overrides.scmutiladdremove)
-    entry = extensions.wrapcommand(commands.table, 'remove',
-                                   overrides.overrideremove)
+    extensions.wrapfunction(cmdutil, 'remove', overrides.cmdutilremove)
     entry = extensions.wrapcommand(commands.table, 'forget',
                                    overrides.overrideforget)
 
diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t
--- a/tests/test-largefiles-misc.t
+++ b/tests/test-largefiles-misc.t
@@ -362,6 +362,9 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg status -S
 
+  $ hg rm -v subrepo/large.txt
+  removing subrepo/large.txt (glob)
+  $ hg revert -R subrepo subrepo/large.txt
   $ rm subrepo/large.txt
   $ hg addremove -S
   removing subrepo/large.txt


More information about the Mercurial-devel mailing list