Mercurial > hg
changeset 29622:9c2cc107547f stable
cmdutil: warnings not issued in remove if subrepopath overlaps
Previously a subrepository "sub" would cause no warnings to be issued
for a file "subnot/a" if it is not removed when calling:
hg remove -S "subnot/a"
author | Hannes Oldenburg <hannes.christian.oldenburg@gmail.com> |
---|---|
date | Fri, 22 Jul 2016 11:29:42 +0000 |
parents | d3df009ab117 |
children | 33bf8bd8c5b9 |
files | mercurial/cmdutil.py tests/test-subrepo.t |
diffstat | 2 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Wed Jul 20 14:12:45 2016 -0500 +++ b/mercurial/cmdutil.py Fri Jul 22 11:29:42 2016 +0000 @@ -2481,14 +2481,15 @@ for f in files: def insubrepo(): for subpath in wctx.substate: - if f.startswith(subpath): + if f.startswith(subpath + '/'): return True return False count += 1 ui.progress(_('deleting'), count, total=total, unit=_('files')) isdir = f in deleteddirs or wctx.hasdir(f) - if f in repo.dirstate or isdir or f == '.' or insubrepo(): + if (f in repo.dirstate or isdir or f == '.' + or insubrepo() or f in subs): continue if repo.wvfs.exists(f):
--- a/tests/test-subrepo.t Wed Jul 20 14:12:45 2016 -0500 +++ b/tests/test-subrepo.t Fri Jul 22 11:29:42 2016 +0000 @@ -53,6 +53,15 @@ 7cf8cfea66e410e8e3336508dfeec07b3192de51 .hgsub .hgsubstate +Subrepopath which overlaps with filepath, does not change warnings in remove() + + $ mkdir snot + $ touch snot/file + $ hg remove -S snot/file + not removing snot/file: file is untracked + [1] + $ rm -r snot + Revert subrepo and test subrepo fileset keyword: $ echo b > s/a