largefiles: fix addremove with -R option stable
authorMatt Harbison <matt_harbison@yahoo.com>
Thu, 19 Jul 2012 06:30:59 -0400
branchstable
changeset 17229 a6d9b2d33040
parent 17228 d1b49b02bc16
child 17230 fc4c155658b7
largefiles: fix addremove with -R option If a file was missing, the missing list contained a path relative to the repo. When building the matcher from that list, the file name ended up concatenated to cwd, causing the command to abort with '<file> not under root'. This rebuilds the missing list with paths relative to cwd.
hgext/largefiles/overrides.py
tests/test-largefiles.t
--- a/hgext/largefiles/overrides.py	Thu Jul 19 21:20:56 2012 +0200
+++ b/hgext/largefiles/overrides.py	Thu Jul 19 06:30:59 2012 -0400
@@ -1001,8 +1001,9 @@
     # we don't remove the standin in the largefiles code, preventing a very
     # confused state later.
     if missing:
+        m = [repo.wjoin(f) for f in missing]
         repo._isaddremove = True
-        removelargefiles(ui, repo, *missing, **opts)
+        removelargefiles(ui, repo, *m, **opts)
         repo._isaddremove = False
     # Call into the normal add code, and any files that *should* be added as
     # largefiles will be
--- a/tests/test-largefiles.t	Thu Jul 19 21:20:56 2012 +0200
+++ b/tests/test-largefiles.t	Thu Jul 19 06:30:59 2012 -0400
@@ -370,6 +370,25 @@
   removing normal3
   adding normaladdremove
 
+Test addremove with -R
+
+  $ hg up -C
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  1 largefiles updated, 0 removed
+  $ rm normal3
+  $ rm sub/large4
+  $ echo "testing addremove with patterns" > testaddremove.dat
+  $ echo "normaladdremove" > normaladdremove
+  $ cd ..
+  $ hg -R a addremove
+  removing sub/large4
+  adding a/.hglf/testaddremove.dat as a largefile (glob)
+  adding a/testaddremove.dat as a largefile (glob)
+  removing normal3
+  adding normaladdremove
+  $ cd a
+
 Clone a largefiles repo.
 
   $ hg clone . ../b