Mercurial > hg-stable
changeset 50300:edcc35a4f1dc stable
dirstate: fix the bug in [status] dealing with committed&ignored directories
In particular, these directories can "infect" their sibling directories with
ignored status due to using a shared memoization cell by accident.
This fixes bug #6795.
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Tue, 14 Mar 2023 14:08:38 +0000 |
parents | 97a6d6bdbc08 |
children | 9fc0d244a753 |
files | rust/hg-core/src/dirstate_tree/status.rs tests/test-status-committed-and-ignored.t |
diffstat | 2 files changed, 2 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate_tree/status.rs Tue Mar 14 14:01:47 2023 +0000 +++ b/rust/hg-core/src/dirstate_tree/status.rs Tue Mar 14 14:08:38 2023 +0000 @@ -244,7 +244,7 @@ match self.parent { None => false, Some(parent) => { - *(parent.cache.get_or_init(|| { + *(self.cache.get_or_init(|| { parent.force(ignore_fn) || ignore_fn(self.path) })) }
--- a/tests/test-status-committed-and-ignored.t Tue Mar 14 14:01:47 2023 +0000 +++ b/tests/test-status-committed-and-ignored.t Tue Mar 14 14:08:38 2023 +0000 @@ -30,6 +30,4 @@ $ touch d1/g $ touch d2/g $ RAYON_NUM_THREADS=1 hg status - ? d2/g (no-rust no-rhg !) - -^ BUG: d2/g does not show up with rust status + ? d2/g