tests/test-convert-authormap.t
author Denis Laxalde <denis.laxalde@logilab.fr>
Tue, 17 Oct 2017 21:15:31 +0200
changeset 34857 84c6b9384d6a
parent 16948 a0cbbf78c31a
child 35400 4441705b7111
permissions -rw-r--r--
log: add -L/--line-range option to follow file history by line range We add an experimental -L/--line-range option to 'hg log' taking file patterns along with a line range using the (new) FILE,FROMLINE-TOLINE syntax where FILE may be a pattern (matching exactly one file). The resulting history is similar to what the "followlines" revset except that, if --patch is specified, only diff hunks within specified line range are shown. Basically, this brings the CLI on par with what currently only exists in hgweb through line selection in "file" and "annotate" views resulting in a file log with filtered patch to only display followed line range. The option may be specified multiple times and can be combined with --rev and regular file patterns to further restrict revisions. Usage of this option requires --follow; revisions are shown in descending order and renames are followed. Only the --graph option is currently not supported. The UI is the result of a consensus from review feedback at: https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-October/106749.html The implementation spreads between commands.log() and cmdutil module. In commands.log(), the main loop may now use a "hunksfilter" factory (similar to "filematcher") that, for a given "rev", produces a filtering function for diff hunks for a given file context object. The logic to build revisions from -L/--line-range options lives in cmdutil.getloglinerangerevs() which produces "revs", "filematcher" and "hunksfilter" information. Revisions obtained by following files' line range are filtered if they do not match the revset specified by --rev option. If regular FILE arguments are passed along with -L options, both filematchers are combined into a new matcher. .. feature:: Add an experimental -L/--line-range FILE,FROMLINE-TOLINE option to 'hg log' command to follow the history of files by line range. In combination with -p/--patch option, only diff hunks within specified line range will be displayed. Feedback, especially on UX aspects, is welcome.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7961
52e442fe43f4 convert: Add testcase for convert authormap.
Marti Raudsepp <marti@juffo.org>
parents:
diff changeset
     1
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     2
  $ cat >> $HGRCPATH <<EOF
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     3
  > [extensions]
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     4
  > convert=
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     5
  > EOF
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     6
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     7
Prepare orig repo
7961
52e442fe43f4 convert: Add testcase for convert authormap.
Marti Raudsepp <marti@juffo.org>
parents:
diff changeset
     8
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
     9
  $ hg init orig
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    10
  $ cd orig
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    11
  $ echo foo > foo
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    12
  $ HGUSER='user name' hg ci -qAm 'foo'
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    13
  $ cd ..
7961
52e442fe43f4 convert: Add testcase for convert authormap.
Marti Raudsepp <marti@juffo.org>
parents:
diff changeset
    14
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    15
Explicit --authors
7962
62154415821f convert: fix authormap handling of lines without '='
Marti Raudsepp <marti@juffo.org>
parents: 7961
diff changeset
    16
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    17
  $ cat > authormap.txt <<EOF
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    18
  > user name = Long User Name
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    19
  > 
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    20
  > # comment
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    21
  > this line is ignored
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    22
  > EOF
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    23
  $ hg convert --authors authormap.txt orig new
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    24
  initializing destination new repository
16925
eaf6a6d7f015 convert: lowercase status and abort messages
Martin Geisler <mg@aragost.com>
parents: 15447
diff changeset
    25
  ignoring bad line in author map file authormap.txt: this line is ignored
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    26
  scanning source...
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    27
  sorting...
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    28
  converting...
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    29
  0 foo
16948
a0cbbf78c31a tests: reintroduce globs in test-convert-authormap.t
Mads Kiilerich <mads@kiilerich.com>
parents: 16925
diff changeset
    30
  writing author map file $TESTTMP/new/.hg/authormap (glob)
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    31
  $ cat new/.hg/authormap
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    32
  user name=Long User Name
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    33
  $ hg -Rnew log
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    34
  changeset:   0:d89716e88087
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    35
  tag:         tip
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    36
  user:        Long User Name
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    37
  date:        Thu Jan 01 00:00:00 1970 +0000
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    38
  summary:     foo
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    39
  
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    40
  $ rm -rf new
7961
52e442fe43f4 convert: Add testcase for convert authormap.
Marti Raudsepp <marti@juffo.org>
parents:
diff changeset
    41
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    42
Implicit .hg/authormap
7961
52e442fe43f4 convert: Add testcase for convert authormap.
Marti Raudsepp <marti@juffo.org>
parents:
diff changeset
    43
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    44
  $ hg init new
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    45
  $ mv authormap.txt new/.hg/authormap
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    46
  $ hg convert orig new
16948
a0cbbf78c31a tests: reintroduce globs in test-convert-authormap.t
Mads Kiilerich <mads@kiilerich.com>
parents: 16925
diff changeset
    47
  ignoring bad line in author map file $TESTTMP/new/.hg/authormap: this line is ignored (glob)
12511
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    48
  scanning source...
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    49
  sorting...
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    50
  converting...
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    51
  0 foo
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    52
  $ hg -Rnew log
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    53
  changeset:   0:d89716e88087
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    54
  tag:         tip
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    55
  user:        Long User Name
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    56
  date:        Thu Jan 01 00:00:00 1970 +0000
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    57
  summary:     foo
0fefeb4fff49 tests: unify test-convert-authormap
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
    58