tests/test-status-committed-and-ignored.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 15 Mar 2024 01:31:57 +0100
branchstable
changeset 51505 c9ceb4f60256
parent 50329 edcc35a4f1dc
permissions -rw-r--r--
phases: avoid N² behavior in `advanceboundary` We allowed duplicated entries in the deque, which each entry could potentially insert all its ancestors. So advancing boundary for the full repository would mean each revision would walk all its ancestors, resulting in O(N²) iteration. For repository of any decent size, N² is quickly insane. We introduce a simple set to avoid this and get back to reasonable performance.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50328
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     1
#testcases dirstate-v1 dirstate-v2
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     2
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     3
#if dirstate-v2
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     4
  $ cat >> $HGRCPATH << EOF
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     5
  > [format]
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     6
  > use-dirstate-v2=1
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     7
  > [storage]
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     8
  > dirstate-v2.slow-path=allow
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
     9
  > EOF
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    10
#endif
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    11
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    12
  $ rm -rf r
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    13
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    14
  $ hg init r
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    15
  $ cd r
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    16
  $ mkdir d1
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    17
  $ mkdir d2
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    18
  $ touch d1/f d2/f
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    19
  $ hg commit -Am '.'
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    20
  adding d1/f
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    21
  adding d2/f
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    22
  $ echo 'syntax:re' >> .hgignore
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    23
  $ echo '^d1$' >> .hgignore
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    24
  $ hg commit -Am "ignore d1"
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    25
  adding .hgignore
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    26
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    27
Now d1 is a directory that's both committed and ignored.
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    28
Untracked files in d2 are still shown, but ones in d1 are ignored:
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    29
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    30
  $ touch d1/g
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    31
  $ touch d2/g
97a6d6bdbc08 tests: demonstrate a bug with committed&ignored dirs
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff changeset
    32
  $ RAYON_NUM_THREADS=1 hg status
50329
edcc35a4f1dc dirstate: fix the bug in [status] dealing with committed&ignored directories
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 50328
diff changeset
    33
  ? d2/g