tests/test-status-committed-and-ignored.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 05 Apr 2024 11:05:54 +0200
changeset 51576 de5bf3fe0233
parent 50329 edcc35a4f1dc
permissions -rw-r--r--
revset: stop serializing node when using "%ln" Turning hundred of thousand of node from node to hex and back can be slow… what about we stop doing it? In many case were we are using node id we should be using revision id. However this is not a good reason to have a stupidly slow implementation of "%ln". This caught my attention again because the phase discovery during push make an extensive use of "%ln" or huge set. In absolute, that phase discovery probably should use "%ld" and need to improves its algorithmic complexity, but improving "%ln" seems simple and long overdue. This greatly speeds up `hg push` on repository with many drafts. Here are some relevant poulpe benchmarks: ### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog # benchmark.name = hg.command.push # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.explicit-rev = all-out-heads # benchmark.variants.issue6528 = disabled # benchmark.variants.protocol = ssh # benchmark.variants.reuse-external-delta-parent = default ## benchmark.variants.revs = any-1-extra-rev before: 44.235070 after: 20.416329 (-53.85%, -23.82) ## benchmark.variants.revs = any-100-extra-rev before: 49.234697 after: 26.519829 (-46.14%, -22.71) ### benchmark.name = hg.command.bundle # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.revs = all # benchmark.variants.type = none-streamv2 ## data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog before: 10.138396 after: 7.750458 (-23.55%, -2.39) ## data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog before: 1.263859 after: 0.700229 (-44.60%, -0.56) ## data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog before: 399.484481 after: 346.5089 (-13.26%, -52.98) ## data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog before: 4.540080 after: 3.401700 (-25.07%, -1.14) ## data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog before: 2.975765 after: 1.870798 (-37.13%, -1.10)
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