tests/test-strict.t
author Bryan O'Sullivan <bryano@fb.com>
Tue, 18 Sep 2012 15:42:19 -0700
changeset 17616 9535a0dc41f2
parent 16853 7863ff383894
child 17981 e689b0d91546
permissions -rw-r--r--
store: implement fncache basic path encoding in C (This is not yet enabled; it will be turned on in a followup patch.) The path encoding performed by fncache is complex and (perhaps surprisingly) slow enough to negatively affect the overall performance of Mercurial. For a short path (< 120 bytes), the Python code can be reduced to a fairly tractable state machine that either determines that nothing needs to be done in a single pass, or performs the encoding in a second pass. For longer paths, we avoid the more complicated hashed encoding scheme for now, and fall back to Python. Raw performance: I measured in a repo containing 150,000 files in its tip manifest, with a median path name length of 57 bytes, and 95th percentile of 96 bytes. In this repo, the Python code takes 3.1 seconds to encode all path names, while the hybrid C-and-Python code (called from Python) takes 0.21 seconds, for a speedup of about 14. Across several other large repositories, I've measured the speedup from the C code at between 26x and 40x. For path names above 120 bytes where we must fall back to Python for hashed encoding, the speedup is about 1.7x. Thus absolute performance will depend strongly on the characteristics of a particular repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
     1
  $ hg init
2988
63c3a1921a67 Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
     2
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
     3
  $ echo a > a
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
     4
  $ hg ci -Ama
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
     5
  adding a
2988
63c3a1921a67 Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
     6
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
     7
  $ hg an a
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
     8
  0: a
2988
63c3a1921a67 Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
     9
16591
46e9ed223d2c commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents: 15862
diff changeset
    10
  $ hg --config ui.strict=False an a
46e9ed223d2c commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents: 15862
diff changeset
    11
  0: a
46e9ed223d2c commands: parse ui.strict config item as bool
Yuya Nishihara <yuya@tcha.org>
parents: 15862
diff changeset
    12
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    13
  $ echo "[ui]" >> $HGRCPATH
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    14
  $ echo "strict=True" >> $HGRCPATH
2988
63c3a1921a67 Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    15
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    16
  $ hg an a
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    17
  hg: unknown command 'an'
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    18
  Mercurial Distributed SCM
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    19
  
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    20
  basic commands:
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    21
  
16853
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    22
   add           add the specified files on the next commit
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    23
   annotate      show changeset information by line for each file
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    24
   clone         make a copy of an existing repository
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    25
   commit        commit the specified files or all outstanding changes
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    26
   diff          diff repository (or selected files)
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    27
   export        dump the header and diffs for one or more changesets
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    28
   forget        forget the specified files on the next commit
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    29
   init          create a new repository in the given directory
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    30
   log           show revision history of entire repository or files
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    31
   merge         merge working directory with another revision
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    32
   phase         set or show the current phase name
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    33
   pull          pull changes from the specified source
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    34
   push          push changes to the specified destination
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    35
   remove        remove the specified files on the next commit
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    36
   serve         start stand-alone webserver
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    37
   status        show changed files in the working directory
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    38
   summary       summarize working directory state
7863ff383894 help: format command and option list help using RST
Olav Reinert <seroton10@gmail.com>
parents: 16591
diff changeset
    39
   update        update working directory (or switch revisions)
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    40
  
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    41
  use "hg help" for the full list of commands or "hg -v" for details
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12097
diff changeset
    42
  [255]
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    43
  $ hg annotate a
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    44
  0: a
2988
63c3a1921a67 Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    45
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    46
should succeed - up is an alias, not an abbreviation
2988
63c3a1921a67 Add ui.strict config item.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    47
12097
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    48
  $ hg up
389c215885c5 tests: unify test-strict
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8167
diff changeset
    49
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved