Mercurial > hg
changeset 17229:a6d9b2d33040 stable
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.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 19 Jul 2012 06:30:59 -0400 |
parents | d1b49b02bc16 |
children | fc4c155658b7 |
files | hgext/largefiles/overrides.py tests/test-largefiles.t |
diffstat | 2 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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