tests/test-eol-add.t
author Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
Tue, 02 Jul 2019 12:59:58 -0400
changeset 42621 99ebde4fec99
parent 13519 43b3b761d9d1
permissions -rw-r--r--
commit: improve the files field of changelog for merges Currently, the files list of merge commits repeats all the deletions (either actual deletions, or files that got renamed) that happened between base and p2 of the merge. If p2 is the main branch, the list can easily be much bigger than the change being merged. This results in various problems worth improving: - changelog is bigger than necessary - `hg log directory` lists many unrelated merge commits, and `hg log -v -r commit` frequently fills multiple screens worth of files - it possibly slows down adjustlinkrev, by forcing it to read more manifests, and that function can certainly be a bottleneck - the server side of pulls can waste a lot of time simply opening the filelogs for pointless files (the constant factors for opening even a tiny filelog is apparently pretty bad) So stop listing such files as described in the code. Impacted merge commits and their descendants get a different hash than they would have without this. This doesn't seem problematic, except for convert. The previous commit helped with that in the hg->hg case (but if you do svn->hg twice from scratch, hashes can still change). The rest of the description is numbers. I don't have much to report, because recreating the files list of existing repositories is not easy: - debugupgradeformat and bundle/unbundle don't recreate the list - export/import tends to choke quickly applying patches or on description that contain diffs, - merge commits from the convert extension don't have the right files list for reasons orthogonal to the current commit - replaying the merge with hg update/hg merge/hg revert --all/hg commit can end up failing in hg revert - I wasn't sure that using debugsetparents + debugrebuilddirstate would really build the right thing I measured commit time before and after this change, in a case with no files filtered out, several files filtered out (no difference) and 5k files filtered out (+1% time). Recreating the 100 more recent merges in a private repo, the concatenated uncompressed files lists goes from 1.12MB to 0.52MB. Excluding 3 merges that are not representative, then the size goes from 570k to 15k. I converted part of mozilla-central, and observed file list shrinking quite a bit too, starting at the very first merge, 733641d9feaf, going from 550 files to 10 files (although they have relatively few merges, so they probably wouldn't care). Differential Revision: https://phab.mercurial-scm.org/D6613
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     1
Test adding .hgeol
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     2
13519
43b3b761d9d1 tests: don't overwrite HGRCPATH
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
     3
  $ cat >> $HGRCPATH <<EOF
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     4
  > [diff]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     5
  > git = 1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     6
  > EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     7
  $ seteol () {
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     8
  >     if [ $1 = "LF" ]; then
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     9
  >         EOL='\n'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    10
  >     else
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    11
  >         EOL='\r\n'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    12
  >     fi
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    13
  > }
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    14
  $ makerepo () {
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    15
  >     echo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    16
  >     echo "# ==== setup repository ===="
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    17
  >     echo '% hg init'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    18
  >     hg init repo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    19
  >     cd repo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    20
  >     printf "first\nsecond\nthird\n" > a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    21
  >     hg commit -d '100 0' --addremove -m 'LF commit'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    22
  >     cd ..
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    23
  > }
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    24
  $ dotest () {
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    25
  >     seteol $1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    26
  >     echo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    27
  >     echo "% hg clone repo repo-$1"
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    28
  >     hg clone repo repo-$1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    29
  >     cd repo-$1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    30
  >     cat > .hg/hgrc <<EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    31
  > [extensions]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    32
  > eol =
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    33
  > [eol]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    34
  > native = LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    35
  > EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    36
  >     cat > .hgeol <<EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    37
  > [patterns]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    38
  > **.txt = native
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    39
  > [repository]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    40
  > native = $1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    41
  > EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    42
  >     echo '% hg add .hgeol'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    43
  >     hg add .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    44
  >     echo '% hg status'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    45
  >     hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    46
  >     echo '% hg commit'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    47
  >     hg commit -d '200 0' -m 'Added .hgeol file'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    48
  >     echo '% hg status'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    49
  >     hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    50
  >     echo '% hg tip -p'
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
    51
  >     hg tip -p
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    52
  >     cd ..
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    53
  >     rm -r repo-$1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    54
  > }
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    55
  $ makerepo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    56
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    57
  # ==== setup repository ====
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    58
  % hg init
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    59
  adding a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    60
  $ dotest LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    61
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    62
  % hg clone repo repo-LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    63
  updating to branch default
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    64
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    65
  % hg add .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    66
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    67
  A .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    68
  % hg commit
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    69
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    70
  % hg tip -p
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    71
  changeset:   1:33503edb53b0
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    72
  tag:         tip
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    73
  user:        test
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    74
  date:        Thu Jan 01 00:03:20 1970 +0000
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    75
  summary:     Added .hgeol file
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    76
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    77
  diff --git a/.hgeol b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    78
  new file mode 100644
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    79
  --- /dev/null
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    80
  +++ b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    81
  @@ -0,0 +1,4 @@
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    82
  +[patterns]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    83
  +**.txt = native
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    84
  +[repository]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    85
  +native = LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    86
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    87
  $ dotest CRLF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    88
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    89
  % hg clone repo repo-CRLF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    90
  updating to branch default
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    91
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    92
  % hg add .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    93
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    94
  M a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    95
  A .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    96
  % hg commit
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    97
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    98
  % hg tip -p
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    99
  changeset:   1:6e64eaa9eb23
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   100
  tag:         tip
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   101
  user:        test
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   102
  date:        Thu Jan 01 00:03:20 1970 +0000
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   103
  summary:     Added .hgeol file
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   104
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   105
  diff --git a/.hgeol b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   106
  new file mode 100644
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   107
  --- /dev/null
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   108
  +++ b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   109
  @@ -0,0 +1,4 @@
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   110
  +[patterns]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   111
  +**.txt = native
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   112
  +[repository]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   113
  +native = CRLF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   114
  diff --git a/a.txt b/a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   115
  --- a/a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   116
  +++ b/a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   117
  @@ -1,3 +1,3 @@
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   118
  -first
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   119
  -second
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   120
  -third
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
   121
  +first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
   122
  +second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
   123
  +third\r (esc)
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   124
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   125
  $ rm -r repo