tests/test-double-merge.t
author Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
Tue, 02 Jul 2019 12:59:58 -0400
changeset 42621 99ebde4fec99
parent 42209 91a0bc50b288
child 44272 17e12938f8e7
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:
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
     1
  $ hg init repo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
     2
  $ cd repo
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     3
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
     4
  $ echo line 1 > foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
     5
  $ hg ci -qAm 'add foo'
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     6
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
     7
copy foo to bar and change both files
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
     8
  $ hg cp foo bar
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
     9
  $ echo line 2-1 >> foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    10
  $ echo line 2-2 >> bar
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
    11
  $ hg ci -m 'cp foo bar; change both'
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    12
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    13
in another branch, change foo in a way that doesn't conflict with
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    14
the other changes
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    15
  $ hg up -qC 0
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    16
  $ echo line 0 > foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    17
  $ hg cat foo >> foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
    18
  $ hg ci -m 'change foo'
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    19
  created new head
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    20
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    21
we get conflicts that shouldn't be there
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    22
  $ hg merge -P
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
    23
  changeset:   1:484bf6903104
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    24
  user:        test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
    25
  date:        Thu Jan 01 00:00:00 1970 +0000
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    26
  summary:     cp foo bar; change both
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    27
  
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    28
  $ hg merge --debug
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    29
    unmatched files in other:
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    30
     bar
16795
e9ae770eff1c merge: show renamed on one and deleted on the other side in debug output
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15625
diff changeset
    31
    all copies found (* = to merge, ! = divergent, % = renamed and deleted):
18135
a6fe1b9cc68f copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents: 16913
diff changeset
    32
     src: 'foo' -> dst: 'bar' *
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    33
    checking for directory renames
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    34
  resolving manifests
18605
bcf29565d89f manifestmerge: pass in branchmerge and force separately
Siddharth Agarwal <sid0@fb.com>
parents: 18541
diff changeset
    35
   branchmerge: True, force: False, partial: False
15625
efdcce3fd2d5 merge: make debug output easier to read
Martin Geisler <mg@aragost.com>
parents: 12156
diff changeset
    36
   ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104
21391
cb15835456cb merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents: 20945
diff changeset
    37
   preserving foo for resolve of bar
cb15835456cb merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents: 20945
diff changeset
    38
   preserving foo for resolve of foo
28318
564a354f7f35 tests: flag Windows specific lines about background closing as optional
Matt Harbison <matt_harbison@yahoo.com>
parents: 27161
diff changeset
    39
  starting 4 threads for background file closing (?)
26618
8e6d5b7317e6 merge.mergestate: perform all premerges before any merges (BC)
Siddharth Agarwal <sid0@fb.com>
parents: 26517
diff changeset
    40
   bar: remote copied from foo -> m (premerge)
27161
296d55def9c4 filemerge: add debug output for whether this is a change/delete conflict
Siddharth Agarwal <sid0@fb.com>
parents: 26618
diff changeset
    41
  picked tool ':merge' for bar (binary False symlink False changedelete False)
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    42
  merging foo and bar to bar
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
    43
  my bar@6a0df1dad128+ other bar@484bf6903104 ancestor foo@e6dc8efe11cc
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    44
   premerge successful
26618
8e6d5b7317e6 merge.mergestate: perform all premerges before any merges (BC)
Siddharth Agarwal <sid0@fb.com>
parents: 26517
diff changeset
    45
   foo: versions differ -> m (premerge)
27161
296d55def9c4 filemerge: add debug output for whether this is a change/delete conflict
Siddharth Agarwal <sid0@fb.com>
parents: 26618
diff changeset
    46
  picked tool ':merge' for foo (binary False symlink False changedelete False)
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    47
  merging foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
    48
  my foo@6a0df1dad128+ other foo@484bf6903104 ancestor foo@e6dc8efe11cc
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    49
   premerge successful
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    50
  0 files updated, 2 files merged, 0 files removed, 0 files unresolved
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    51
  (branch merge, don't forget to commit)
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    52
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    53
contents of foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    54
  $ cat foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    55
  line 0
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    56
  line 1
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    57
  line 2-1
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    58
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    59
contents of bar
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    60
  $ cat bar
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    61
  line 0
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    62
  line 1
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
    63
  line 2-2
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16795
diff changeset
    64
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16795
diff changeset
    65
  $ cd ..