purge: also deal with directory with --confirm
Getting the exact number is simple (you have to project the result of previous
deletion to detect super-directory with only about-to-be-deleted content). So we
use a vaguer message.
Differential Revision: https://phab.mercurial-scm.org/D9819
--- a/mercurial/merge.py Mon Jan 18 10:24:03 2021 +0100
+++ b/mercurial/merge.py Mon Jan 18 10:24:11 2021 +0100
@@ -2386,9 +2386,19 @@
elif nb_ignored:
msg = _(b"permanently delete %d ignored files?")
msg %= nb_ignored
- else:
- # XXX we might be missing directory there
- return res
+ elif removeemptydirs:
+ dir_count = 0
+ for f in directories:
+ if matcher(f) and not repo.wvfs.listdir(f):
+ dir_count += 1
+ if dir_count:
+ msg = _(
+ b"permanently delete at least %d empty directories?"
+ )
+ msg %= dir_count
+ else:
+ # XXX we might be missing directory there
+ return res
msg += b" (yN)$$ &Yes $$ &No"
if repo.ui.promptchoice(msg, default=1) == 1:
raise error.CanceledError(_(b'removal cancelled'))
--- a/tests/test-purge.t Mon Jan 18 10:24:03 2021 +0100
+++ b/tests/test-purge.t Mon Jan 18 10:24:11 2021 +0100
@@ -23,6 +23,10 @@
$ mkdir empty_dir
$ hg purge -p -v
empty_dir
+ $ hg purge --confirm
+ permanently delete at least 1 empty directories? (yN) n
+ abort: removal cancelled
+ [250]
$ hg purge -v
removing directory empty_dir
$ ls -A