mercurial/templates/map-cmdline.status
author Durham Goode <durham@fb.com>
Fri, 05 Feb 2016 13:23:24 -0800
changeset 28000 d4247c306d82
parent 25628 9c647f427aef
child 29000 2d3837a4bded
permissions -rw-r--r--
copies: optimize forward copy detection logic for rebases Forward copy detection (i.e. detecting what files have been moved/copied in commit X since ancestor Y) previously required diff'ing the manifests of both X and Y. This was expensive since it required reading both entire manifests and doing a set difference (they weren't already in a set because of the lazymanifest work). This cost almost 1 second on very large repositories, and happens N times for a rebase of N commits. This patch optimizes it for the case of rebase. In a rebase, we are comparing a commit against it's immediate parent, and therefore we can know what files changed by looking at ctx.files(). This lets us drastically decrease the size of the set comparison, and makes it O(# of changes) instead of O(size of manifest). This makes it take 1ms instead of 1000ms.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25006
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     1
%include map-cmdline.default
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     2
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     3
# Override base templates
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     4
changeset = '{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{summary}{lfiles}\n'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     5
changeset_verbose = '{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{description}{lfiles}\n'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     6
changeset_debug = '{fullcset}{branches}{bookmarks}{tags}{lphase}{parents}{manifest}{user}{ldate}{extras}{description}{lfiles}\n'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     7
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     8
# Override the file templates
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
     9
lfiles = '{if(files,
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    10
              label('ui.note log.files',
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    11
                    'files:\n'))}{lfile_mods}{lfile_adds}{lfile_copies_switch}{lfile_dels}'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    12
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    13
# Exclude copied files, will display those in lfile_copies_switch
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    14
lfile_adds  = '{file_adds % "{ifcontains(file, file_copies_switch,
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    15
                                         '',
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    16
                                         '{lfile_add}')}"}'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    17
lfile_add = '{label("status.added", "A {file}\n")}'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    18
25628
9c647f427aef templates: fix missing closing brace in map-cmdline.status
Yuya Nishihara <yuya@tcha.org>
parents: 25006
diff changeset
    19
lfile_copies_switch = '{file_copies_switch % "{lfile_copy_orig}{lfile_copy_dest}"}'
25006
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    20
lfile_copy_orig = '{label("status.added", "A {name}\n")}'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    21
lfile_copy_dest = '{label("status.copied", "  {source}\n")}'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    22
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    23
lfile_mods = '{file_mods % "{label('status.modified', 'M {file}\n')}"}'
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    24
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
    25
lfile_dels = '{file_dels % "{label('status.removed', 'R {file}\n')}"}'