Mercurial > hg
changeset 33683:7dcb517122f9
sparse: properly error out when absolute paths are used
Current logic is misleading (it says it drops only absolute paths, but
it actually drops all of them), not cross-platform (does not support Windows)
and IMO just wrong (as it should just error out if absolute paths are given).
This commit fixes it.
author | Kostia Balytskyi <ikostia@fb.com> |
---|---|
date | Wed, 02 Aug 2017 15:05:21 -0700 |
parents | 1d5e497c08b3 |
children | 2be0bf186950 |
files | mercurial/sparse.py tests/test-sparse.t |
diffstat | 2 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/sparse.py Thu Aug 03 23:02:32 2017 +0900 +++ b/mercurial/sparse.py Wed Aug 02 15:05:21 2017 -0700 @@ -636,10 +636,10 @@ newexclude = set(oldexclude) newprofiles = set(oldprofiles) - if any(pat.startswith('/') for pat in pats): - repo.ui.warn(_('warning: paths cannot start with /, ignoring: %s\n') - % ([pat for pat in pats if pat.startswith('/')])) - elif include: + if any(os.path.isabs(pat) for pat in pats): + raise error.Abort(_('paths cannot be absolute')) + + if include: newinclude.update(pats) elif exclude: newexclude.update(pats)
--- a/tests/test-sparse.t Thu Aug 03 23:02:32 2017 +0900 +++ b/tests/test-sparse.t Wed Aug 02 15:05:21 2017 -0700 @@ -29,20 +29,22 @@ #if no-windows $ hg debugsparse --include /foo/bar - warning: paths cannot start with /, ignoring: ['/foo/bar'] + abort: paths cannot be absolute + [255] $ hg debugsparse --include '$TESTTMP/myrepo/hide' $ hg debugsparse --include '/root' - warning: paths cannot start with /, ignoring: ['/root'] + abort: paths cannot be absolute + [255] #else TODO: See if this can be made to fail the same way as on Unix $ hg debugsparse --include /c/foo/bar - abort: c:/foo/bar not under root '$TESTTMP/myrepo' (glob) + abort: paths cannot be absolute [255] $ hg debugsparse --include '$TESTTMP/myrepo/hide' $ hg debugsparse --include '/c/root' - abort: c:/root not under root '$TESTTMP/myrepo' (glob) + abort: paths cannot be absolute [255] #endif