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