Mercurial > hg
annotate tests/test-fix.t @ 52053:af54626bf358
dirstate-map: add a missing debug wait point when accessing the v2 docket
fc8e37c380d3 added synchronization points to the dirstate to allow for race
condition testing without actually requiring a time-based race condition
to happen.
This changes adds the `pre-read-file` wait point before we read the docket,
since callers might ask for the parents before anything else is
read, leading to the first read being done before the wait point.
This removes some differences in test output which were presumed to be
speed related, but weren't.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Mon, 14 Oct 2024 14:14:21 +0200 |
parents | f4ff55583dec |
children | 51057ab0dffa |
rev | line source |
---|---|
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
1 A script that implements uppercasing of specific lines in a file. This |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
2 approximates the behavior of code formatters well enough for our tests. |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
3 |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
4 $ UPPERCASEPY="$TESTTMP/uppercase.py" |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
5 $ cat > $UPPERCASEPY <<EOF |
47765
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
6 > import re |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
7 > import sys |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
8 > from mercurial.utils.procutil import setbinary |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
9 > setbinary(sys.stdin) |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
10 > setbinary(sys.stdout) |
47067
ea563187ee7c
tests: change the fixer commands to use the buffer attribute on stdio objects
Matt Harbison <matt_harbison@yahoo.com>
parents:
46838
diff
changeset
|
11 > stdin = getattr(sys.stdin, 'buffer', sys.stdin) |
ea563187ee7c
tests: change the fixer commands to use the buffer attribute on stdio objects
Matt Harbison <matt_harbison@yahoo.com>
parents:
46838
diff
changeset
|
12 > stdout = getattr(sys.stdout, 'buffer', sys.stdout) |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
13 > lines = set() |
47765
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
14 > def format(text): |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
15 > return re.sub(b' +', b' ', text.upper()) |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
16 > for arg in sys.argv[1:]: |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
17 > if arg == 'all': |
47765
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
18 > stdout.write(format(stdin.read())) |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
19 > sys.exit(0) |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
20 > else: |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
21 > first, last = arg.split('-') |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
22 > lines.update(range(int(first), int(last) + 1)) |
47067
ea563187ee7c
tests: change the fixer commands to use the buffer attribute on stdio objects
Matt Harbison <matt_harbison@yahoo.com>
parents:
46838
diff
changeset
|
23 > for i, line in enumerate(stdin.readlines()): |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
24 > if i + 1 in lines: |
47765
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
25 > stdout.write(format(line)) |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
26 > else: |
47067
ea563187ee7c
tests: change the fixer commands to use the buffer attribute on stdio objects
Matt Harbison <matt_harbison@yahoo.com>
parents:
46838
diff
changeset
|
27 > stdout.write(line) |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
28 > EOF |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
29 $ TESTLINES="foo\nbar\nbaz\nqux\n" |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
30 $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
31 foo |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
32 bar |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
33 baz |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
34 qux |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
35 $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY all |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
36 FOO |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
37 BAR |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
38 BAZ |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
39 QUX |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
40 $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY 1-1 |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
41 FOO |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
42 bar |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
43 baz |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
44 qux |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
45 $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY 1-2 |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
46 FOO |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
47 BAR |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
48 baz |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
49 qux |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
50 $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY 2-3 |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
51 foo |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
52 BAR |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
53 BAZ |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
54 qux |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
55 $ printf $TESTLINES | "$PYTHON" $UPPERCASEPY 2-2 4-4 |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
56 foo |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
57 BAR |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
58 baz |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
59 QUX |
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
60 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
61 Set up the config with two simple fixers: one that fixes specific line ranges, |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
62 and one that always fixes the whole file. They both "fix" files by converting |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
63 letters to uppercase. They use different file extensions, so each test case can |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
64 choose which behavior to use by naming files. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
65 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
66 $ cat >> $HGRCPATH <<EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
67 > [extensions] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
68 > fix = |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
69 > [experimental] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
70 > evolution.createmarkers=True |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
71 > evolution.allowunstable=True |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
72 > [fix] |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
73 > uppercase-whole-file:command="$PYTHON" $UPPERCASEPY all |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
74 > uppercase-whole-file:pattern=set:**.whole |
39707
5abc47d4ca6b
tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents:
39111
diff
changeset
|
75 > uppercase-changed-lines:command="$PYTHON" $UPPERCASEPY |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
76 > uppercase-changed-lines:linerange={first}-{last} |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
77 > uppercase-changed-lines:pattern=set:**.changed |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
78 > EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
79 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
80 Help text for fix. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
81 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
82 $ hg help fix |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
83 hg fix [OPTION]... [FILE]... |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
84 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
85 rewrite file content in changesets or working directory |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
86 |
50359
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
87 Runs any configured tools to fix the content of files. (See 'hg help -e |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
88 fix' for details about configuring tools.) Only affects files with |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
89 changes, unless file arguments are provided. Only affects changed lines of |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
90 files, unless the --whole flag is used. Some tools may always affect the |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
91 whole file regardless of --whole. |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
92 |
45218
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
93 If --working-dir is used, files with uncommitted changes in the working |
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
94 copy will be fixed. Note that no backup are made. |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
95 |
45218
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
96 If revisions are specified with --source, those revisions and their |
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
97 descendants will be checked, and they may be replaced with new revisions |
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
98 that have fixed file content. By automatically including the descendants, |
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
99 no merging, rebasing, or evolution will be required. If an ancestor of the |
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
100 working copy is included, then the working copy itself will also be fixed, |
3ea3b85df03f
fix: update documentation to reflect preference for --source over --rev
Martin von Zweigbergk <martinvonz@google.com>
parents:
45215
diff
changeset
|
101 and the working copy will be updated to the fixed parent. |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
102 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
103 When determining what lines of each file to fix at each revision, the |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
104 whole set of revisions being fixed is considered, so that fixes to earlier |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
105 revisions are not forgotten in later ones. The --base flag can be used to |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
106 override this default behavior, though it is not usually desirable to do |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
107 so. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
108 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
109 (use 'hg help -e fix' to show help for the fix extension) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
110 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
111 options ([+] can be repeated): |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
112 |
44574
5205b46bd887
fix: add a -s option to format a revision and its descendants
Martin von Zweigbergk <martinvonz@google.com>
parents:
44129
diff
changeset
|
113 --all fix all non-public non-obsolete revisions |
5205b46bd887
fix: add a -s option to format a revision and its descendants
Martin von Zweigbergk <martinvonz@google.com>
parents:
44129
diff
changeset
|
114 --base REV [+] revisions to diff against (overrides automatic selection, |
5205b46bd887
fix: add a -s option to format a revision and its descendants
Martin von Zweigbergk <martinvonz@google.com>
parents:
44129
diff
changeset
|
115 and applies to every revision being fixed) |
5205b46bd887
fix: add a -s option to format a revision and its descendants
Martin von Zweigbergk <martinvonz@google.com>
parents:
44129
diff
changeset
|
116 -s --source REV [+] fix the specified revisions and their descendants |
5205b46bd887
fix: add a -s option to format a revision and its descendants
Martin von Zweigbergk <martinvonz@google.com>
parents:
44129
diff
changeset
|
117 -w --working-dir fix the working directory |
5205b46bd887
fix: add a -s option to format a revision and its descendants
Martin von Zweigbergk <martinvonz@google.com>
parents:
44129
diff
changeset
|
118 --whole always fix every line of a file |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
119 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
120 (some details hidden, use --verbose to show complete help) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
121 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
122 $ hg help -e fix |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
123 fix extension - rewrite file content in changesets or working copy |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
124 (EXPERIMENTAL) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
125 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
126 Provides a command that runs configured tools on the contents of modified |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
127 files, writing back any fixes to the working copy or replacing changesets. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
128 |
50359
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
129 Fixer tools are run in the repository's root directory. This allows them to |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
130 read configuration files from the working copy, or even write to the working |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
131 copy. The working copy is not updated to match the revision being fixed. In |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
132 fact, several revisions may be fixed in parallel. Writes to the working copy |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
133 are not amended into the revision being fixed; fixer tools MUST always read |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
134 content to be fixed from stdin, and write fixed file content back to stdout. |
f4ff55583dec
fix: highlight the required configuration and behavior of the fixer tools
Matt Harbison <matt_harbison@yahoo.com>
parents:
49977
diff
changeset
|
135 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
136 Here is an example configuration that causes 'hg fix' to apply automatic |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
137 formatting fixes to modified lines in C++ code: |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
138 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
139 [fix] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
140 clang-format:command=clang-format --assume-filename={rootpath} |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
141 clang-format:linerange=--lines={first}:{last} |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
142 clang-format:pattern=set:**.cpp or **.hpp |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
143 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
144 The :command suboption forms the first part of the shell command that will be |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
145 used to fix a file. The content of the file is passed on standard input, and |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
146 the fixed file content is expected on standard output. Any output on standard |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
147 error will be displayed as a warning. If the exit status is not zero, the file |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
148 will not be affected. A placeholder warning is displayed if there is a non- |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
149 zero exit status but no standard error output. Some values may be substituted |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
150 into the command: |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
151 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
152 {rootpath} The path of the file being fixed, relative to the repo root |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
153 {basename} The name of the file being fixed, without the directory path |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
154 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
155 If the :linerange suboption is set, the tool will only be run if there are |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
156 changed lines in a file. The value of this suboption is appended to the shell |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
157 command once for every range of changed lines in the file. Some values may be |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
158 substituted into the command: |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
159 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
160 {first} The 1-based line number of the first line in the modified range |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
161 {last} The 1-based line number of the last line in the modified range |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
162 |
42756
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
163 Deleted sections of a file will be ignored by :linerange, because there is no |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
164 corresponding line range in the version being fixed. |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
165 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
166 By default, tools that set :linerange will only be executed if there is at |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
167 least one changed line range. This is meant to prevent accidents like running |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
168 a code formatter in such a way that it unexpectedly reformats the whole file. |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
169 If such a tool needs to operate on unchanged files, it should set the |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
170 :skipclean suboption to false. |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
171 |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
172 The :pattern suboption determines which files will be passed through each |
43227
f02d3c0eed18
fix: match patterns relative to root
Martin von Zweigbergk <martinvonz@google.com>
parents:
43226
diff
changeset
|
173 configured tool. See 'hg help patterns' for possible values. However, all |
f02d3c0eed18
fix: match patterns relative to root
Martin von Zweigbergk <martinvonz@google.com>
parents:
43226
diff
changeset
|
174 patterns are relative to the repo root, even if that text says they are |
f02d3c0eed18
fix: match patterns relative to root
Martin von Zweigbergk <martinvonz@google.com>
parents:
43226
diff
changeset
|
175 relative to the current working directory. If there are file arguments to 'hg |
f02d3c0eed18
fix: match patterns relative to root
Martin von Zweigbergk <martinvonz@google.com>
parents:
43226
diff
changeset
|
176 fix', the intersection of these patterns is used. |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
177 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
178 There is also a configurable limit for the maximum size of file that will be |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
179 processed by 'hg fix': |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
180 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
181 [fix] |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
182 maxfilesize = 2MB |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
183 |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
184 Normally, execution of configured tools will continue after a failure |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
185 (indicated by a non-zero exit status). It can also be configured to abort |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
186 after the first such failure, so that no files will be affected if any tool |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
187 fails. This abort will also cause 'hg fix' to exit with a non-zero status: |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
188 |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
189 [fix] |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
190 failure = abort |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
191 |
40566
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
192 When multiple tools are configured to affect a file, they execute in an order |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
193 defined by the :priority suboption. The priority suboption has a default value |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
194 of zero for each tool. Tools are executed in order of descending priority. The |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
195 execution order of tools with equal priority is unspecified. For example, you |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
196 could use the 'sort' and 'head' utilities to keep only the 10 smallest numbers |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
197 in a text file by ensuring that 'sort' runs before 'head': |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
198 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
199 [fix] |
41126
d8f5c615e811
tests: use more portable flags in test-fix.t
Danny Hooper <hooper@google.com>
parents:
41010
diff
changeset
|
200 sort:command = sort -n |
d8f5c615e811
tests: use more portable flags in test-fix.t
Danny Hooper <hooper@google.com>
parents:
41010
diff
changeset
|
201 head:command = head -n 10 |
40566
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
202 sort:pattern = numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
203 head:pattern = numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
204 sort:priority = 2 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
205 head:priority = 1 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
206 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
207 To account for changes made by each tool, the line numbers used for |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
208 incremental formatting are recomputed before executing the next tool. So, each |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
209 tool may see different values for the arguments added by the :linerange |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
210 suboption. |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
211 |
42194
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
212 Each fixer tool is allowed to return some metadata in addition to the fixed |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
213 file content. The metadata must be placed before the file content on stdout, |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
214 separated from the file content by a zero byte. The metadata is parsed as a |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
215 JSON value (so, it should be UTF-8 encoded and contain no zero bytes). A fixer |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
216 tool is expected to produce this metadata encoding if and only if the |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
217 :metadata suboption is true: |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
218 |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
219 [fix] |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
220 tool:command = tool --prepend-json-metadata |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
221 tool:metadata = true |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
222 |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
223 The metadata values are passed to hooks, which can be used to print summaries |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
224 or perform other post-fixing work. The supported hooks are: |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
225 |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
226 "postfixfile" |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
227 Run once for each file in each revision where any fixer tools made changes |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
228 to the file content. Provides "$HG_REV" and "$HG_PATH" to identify the file, |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
229 and "$HG_METADATA" with a map of fixer names to metadata values from fixer |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
230 tools that affected the file. Fixer tools that didn't affect the file have a |
44048
61881b170140
fix: fix grammar/typos in hg help -e fix
timeless <timeless@mozdev.org>
parents:
43227
diff
changeset
|
231 value of None. Only fixer tools that executed are present in the metadata. |
42194
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
232 |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
233 "postfix" |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
234 Run once after all files and revisions have been handled. Provides |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
235 "$HG_REPLACEMENTS" with information about what revisions were created and |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
236 made obsolete. Provides a boolean "$HG_WDIRWRITTEN" to indicate whether any |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
237 files in the working copy were updated. Provides a list "$HG_METADATA" |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
238 mapping fixer tool names to lists of metadata values returned from |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
239 executions that modified a file. This aggregates the same metadata |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
240 previously passed to the "postfixfile" hook. |
0da689a60163
fix: allow fixer tools to return metadata in addition to the file content
Danny Hooper <hooper@google.com>
parents:
42008
diff
changeset
|
241 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
242 list of commands: |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
243 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
244 fix rewrite file content in changesets or working directory |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
245 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
246 (use 'hg help -v -e fix' to show built-in aliases and global options) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
247 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
248 There is no default behavior in the absence of --rev and --working-dir. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
249 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
250 $ hg init badusage |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
251 $ cd badusage |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
252 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
253 $ hg fix |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
254 abort: no changesets specified |
45807
f90943d753ef
fix: suggest --source instead of --rev on empty revset
Martin von Zweigbergk <martinvonz@google.com>
parents:
45771
diff
changeset
|
255 (use --source or --working-dir) |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
256 [255] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
257 $ hg fix --whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
258 abort: no changesets specified |
45807
f90943d753ef
fix: suggest --source instead of --rev on empty revset
Martin von Zweigbergk <martinvonz@google.com>
parents:
45771
diff
changeset
|
259 (use --source or --working-dir) |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
260 [255] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
261 $ hg fix --base 0 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
262 abort: no changesets specified |
45807
f90943d753ef
fix: suggest --source instead of --rev on empty revset
Martin von Zweigbergk <martinvonz@google.com>
parents:
45771
diff
changeset
|
263 (use --source or --working-dir) |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
264 [255] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
265 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
266 Fixing a public revision isn't allowed. It should abort early enough that |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
267 nothing happens, even to the working directory. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
268 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
269 $ printf "hello\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
270 $ hg commit -Aqm "hello" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
271 $ hg phase -r 0 --public |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
272 $ hg fix -r 0 |
47069
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47018
diff
changeset
|
273 abort: cannot fix public changesets: 6470986d2e7b |
43936
699d6be3820a
fix: use rewriteutil.precheck() instead of reimplementing it
Martin von Zweigbergk <martinvonz@google.com>
parents:
43227
diff
changeset
|
274 (see 'hg help phases' for details) |
45853
b4694ef45db5
errors: raise more specific errors from rewriteutil
Martin von Zweigbergk <martinvonz@google.com>
parents:
45840
diff
changeset
|
275 [10] |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
276 $ hg fix -r 0 --working-dir |
47069
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47018
diff
changeset
|
277 abort: cannot fix public changesets: 6470986d2e7b |
43936
699d6be3820a
fix: use rewriteutil.precheck() instead of reimplementing it
Martin von Zweigbergk <martinvonz@google.com>
parents:
43227
diff
changeset
|
278 (see 'hg help phases' for details) |
45853
b4694ef45db5
errors: raise more specific errors from rewriteutil
Martin von Zweigbergk <martinvonz@google.com>
parents:
45840
diff
changeset
|
279 [10] |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
280 $ hg cat -r tip hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
281 hello |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
282 $ cat hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
283 hello |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
284 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
285 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
286 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
287 Fixing a clean working directory should do nothing. Even the --whole flag |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
288 shouldn't cause any clean files to be fixed. Specifying a clean file explicitly |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
289 should only fix it if the fixer always fixes the whole file. The combination of |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
290 an explicit filename and --whole should format the entire file regardless. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
291 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
292 $ hg init fixcleanwdir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
293 $ cd fixcleanwdir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
294 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
295 $ printf "hello\n" > hello.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
296 $ printf "world\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
297 $ hg commit -Aqm "foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
298 $ hg fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
299 $ hg diff |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
300 $ hg fix --working-dir --whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
301 $ hg diff |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
302 $ hg fix --working-dir * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
303 $ cat * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
304 hello |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
305 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
306 $ hg revert --all --no-backup |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
307 reverting hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
308 $ hg fix --working-dir * --whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
309 $ cat * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
310 HELLO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
311 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
312 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
313 The same ideas apply to fixing a revision, so we create a revision that doesn't |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
314 modify either of the files in question and try fixing it. This also tests that |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
315 we ignore a file that doesn't match any configured fixer. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
316 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
317 $ hg revert --all --no-backup |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
318 reverting hello.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
319 reverting hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
320 $ printf "unimportant\n" > some.file |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
321 $ hg commit -Aqm "some other file" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
322 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
323 $ hg fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
324 $ hg cat -r tip * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
325 hello |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
326 world |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
327 unimportant |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
328 $ hg fix -r . --whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
329 $ hg cat -r tip * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
330 hello |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
331 world |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
332 unimportant |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
333 $ hg fix -r . * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
334 $ hg cat -r tip * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
335 hello |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
336 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
337 unimportant |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
338 $ hg fix -r . * --whole --config experimental.evolution.allowdivergence=true |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
339 2 new content-divergent changesets |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
340 $ hg cat -r tip * |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
341 HELLO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
342 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
343 unimportant |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
344 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
345 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
346 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
347 Fixing the working directory should still work if there are no revisions. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
348 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
349 $ hg init norevisions |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
350 $ cd norevisions |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
351 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
352 $ printf "something\n" > something.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
353 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
354 adding something.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
355 $ hg fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
356 $ cat something.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
357 SOMETHING |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
358 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
359 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
360 |
47765
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
361 Test that the working copy is reported clean if formatting of the parent makes |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
362 it clean. |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
363 $ hg init wc-already-formatted |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
364 $ cd wc-already-formatted |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
365 |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
366 $ printf "hello world\n" > hello.whole |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
367 $ hg commit -Am initial |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
368 adding hello.whole |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
369 $ hg fix -w * |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
370 $ hg st |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
371 M hello.whole |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
372 $ hg fix -s . * |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
373 $ hg st |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
374 $ hg diff |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
375 |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
376 $ cd .. |
184d83ef2e59
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
47128
diff
changeset
|
377 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
378 Test the effect of fixing the working directory for each possible status, with |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
379 and without providing explicit file arguments. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
380 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
381 $ hg init implicitlyfixstatus |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
382 $ cd implicitlyfixstatus |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
383 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
384 $ printf "modified\n" > modified.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
385 $ printf "removed\n" > removed.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
386 $ printf "deleted\n" > deleted.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
387 $ printf "clean\n" > clean.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
388 $ printf "ignored.whole" > .hgignore |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
389 $ hg commit -Aqm "stuff" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
390 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
391 $ printf "modified!!!\n" > modified.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
392 $ printf "unknown\n" > unknown.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
393 $ printf "ignored\n" > ignored.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
394 $ printf "added\n" > added.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
395 $ hg add added.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
396 $ hg remove removed.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
397 $ rm deleted.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
398 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
399 $ hg status --all |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
400 M modified.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
401 A added.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
402 R removed.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
403 ! deleted.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
404 ? unknown.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
405 I ignored.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
406 C .hgignore |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
407 C clean.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
408 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
409 $ hg fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
410 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
411 $ hg status --all |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
412 M modified.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
413 A added.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
414 R removed.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
415 ! deleted.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
416 ? unknown.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
417 I ignored.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
418 C .hgignore |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
419 C clean.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
420 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
421 $ cat *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
422 ADDED |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
423 clean |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
424 ignored |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
425 MODIFIED!!! |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
426 unknown |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
427 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
428 $ printf "modified!!!\n" > modified.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
429 $ printf "added\n" > added.whole |
42008
7f6b375a8903
fix: allow fixing untracked files when given as arguments
Danny Hooper <hooper@google.com>
parents:
41126
diff
changeset
|
430 |
7f6b375a8903
fix: allow fixing untracked files when given as arguments
Danny Hooper <hooper@google.com>
parents:
41126
diff
changeset
|
431 Listing the files explicitly causes untracked files to also be fixed, but |
7f6b375a8903
fix: allow fixing untracked files when given as arguments
Danny Hooper <hooper@google.com>
parents:
41126
diff
changeset
|
432 ignored files are still unaffected. |
7f6b375a8903
fix: allow fixing untracked files when given as arguments
Danny Hooper <hooper@google.com>
parents:
41126
diff
changeset
|
433 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
434 $ hg fix --working-dir *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
435 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
436 $ hg status --all |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
437 M clean.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
438 M modified.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
439 A added.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
440 R removed.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
441 ! deleted.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
442 ? unknown.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
443 I ignored.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
444 C .hgignore |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
445 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
446 $ cat *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
447 ADDED |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
448 CLEAN |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
449 ignored |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
450 MODIFIED!!! |
42008
7f6b375a8903
fix: allow fixing untracked files when given as arguments
Danny Hooper <hooper@google.com>
parents:
41126
diff
changeset
|
451 UNKNOWN |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
452 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
453 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
454 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
455 Test that incremental fixing works on files with additions, deletions, and |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
456 changes in multiple line ranges. Note that deletions do not generally cause |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
457 neighboring lines to be fixed, so we don't return a line range for purely |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
458 deleted sections. In the future we should support a :deletion config that |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
459 allows fixers to know where deletions are located. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
460 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
461 $ hg init incrementalfixedlines |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
462 $ cd incrementalfixedlines |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
463 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
464 $ printf "a\nb\nc\nd\ne\nf\ng\n" > foo.txt |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
465 $ hg commit -Aqm "foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
466 $ printf "zz\na\nc\ndd\nee\nff\nf\ngg\n" > foo.txt |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
467 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
468 $ hg --config "fix.fail:command=echo" \ |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
469 > --config "fix.fail:linerange={first}:{last}" \ |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
470 > --config "fix.fail:pattern=foo.txt" \ |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
471 > fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
472 $ cat foo.txt |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
473 1:1 4:6 8:8 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
474 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
475 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
476 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
477 Test that --whole fixes all lines regardless of the diffs present. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
478 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
479 $ hg init wholeignoresdiffs |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
480 $ cd wholeignoresdiffs |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
481 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
482 $ printf "a\nb\nc\nd\ne\nf\ng\n" > foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
483 $ hg commit -Aqm "foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
484 $ printf "zz\na\nc\ndd\nee\nff\nf\ngg\n" > foo.changed |
42663
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
485 |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
486 $ hg fix --working-dir |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
487 $ cat foo.changed |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
488 ZZ |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
489 a |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
490 c |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
491 DD |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
492 EE |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
493 FF |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
494 f |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
495 GG |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
496 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
497 $ hg fix --working-dir --whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
498 $ cat foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
499 ZZ |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
500 A |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
501 C |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
502 DD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
503 EE |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
504 FF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
505 F |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
506 GG |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
507 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
508 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
509 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
510 We should do nothing with symlinks, and their targets should be unaffected. Any |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
511 other behavior would be more complicated to implement and harder to document. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
512 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
513 #if symlink |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
514 $ hg init dontmesswithsymlinks |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
515 $ cd dontmesswithsymlinks |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
516 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
517 $ printf "hello\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
518 $ ln -s hello.whole hellolink |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
519 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
520 adding hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
521 adding hellolink |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
522 $ hg fix --working-dir hellolink |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
523 $ hg status |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
524 A hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
525 A hellolink |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
526 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
527 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
528 #endif |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
529 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
530 We should allow fixers to run on binary files, even though this doesn't sound |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
531 like a common use case. There's not much benefit to disallowing it, and users |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
532 can add "and not binary()" to their filesets if needed. The Mercurial |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
533 philosophy is generally to not handle binary files specially anyway. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
534 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
535 $ hg init cantouchbinaryfiles |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
536 $ cd cantouchbinaryfiles |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
537 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
538 $ printf "hello\0\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
539 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
540 adding hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
541 $ hg fix --working-dir 'set:binary()' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
542 $ cat hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
543 HELLO\x00 (esc) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
544 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
545 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
546 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
547 We have a config for the maximum size of file we will attempt to fix. This can |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
548 be helpful to avoid running unsuspecting fixer tools on huge inputs, which |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
549 could happen by accident without a well considered configuration. A more |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
550 precise configuration could use the size() fileset function if one global limit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
551 is undesired. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
552 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
553 $ hg init maxfilesize |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
554 $ cd maxfilesize |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
555 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
556 $ printf "this file is huge\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
557 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
558 adding hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
559 $ hg --config fix.maxfilesize=10 fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
560 ignoring file larger than 10 bytes: hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
561 $ cat hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
562 this file is huge |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
563 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
564 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
565 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
566 If we specify a file to fix, other files should be left alone, even if they |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
567 have changes. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
568 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
569 $ hg init fixonlywhatitellyouto |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
570 $ cd fixonlywhatitellyouto |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
571 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
572 $ printf "fix me!\n" > fixme.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
573 $ printf "not me.\n" > notme.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
574 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
575 adding fixme.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
576 adding notme.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
577 $ hg fix --working-dir fixme.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
578 $ cat *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
579 FIX ME! |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
580 not me. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
581 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
582 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
583 |
42663
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
584 If we try to fix a missing file, we still fix other files. |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
585 |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
586 $ hg init fixmissingfile |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
587 $ cd fixmissingfile |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
588 |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
589 $ printf "fix me!\n" > foo.whole |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
590 $ hg add |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
591 adding foo.whole |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
592 $ hg fix --working-dir foo.whole bar.whole |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
593 bar.whole: $ENOENT$ |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
594 $ cat *.whole |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
595 FIX ME! |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
596 |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
597 $ cd .. |
4b04244f2d5f
fix: add some new test cases
Danny Hooper <hooper@google.com>
parents:
42655
diff
changeset
|
598 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
599 Specifying a directory name should fix all its files and subdirectories. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
600 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
601 $ hg init fixdirectory |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
602 $ cd fixdirectory |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
603 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
604 $ mkdir -p dir1/dir2 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
605 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
606 $ printf "bar\n" > dir1/bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
607 $ printf "baz\n" > dir1/dir2/baz.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
608 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
609 adding dir1/bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
610 adding dir1/dir2/baz.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
611 adding foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
612 $ hg fix --working-dir dir1 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
613 $ cat foo.whole dir1/bar.whole dir1/dir2/baz.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
614 foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
615 BAR |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
616 BAZ |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
617 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
618 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
619 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
620 Fixing a file in the working directory that needs no fixes should not actually |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
621 write back to the file, so for example the mtime shouldn't change. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
622 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
623 $ hg init donttouchunfixedfiles |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
624 $ cd donttouchunfixedfiles |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
625 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
626 $ printf "NO FIX NEEDED\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
627 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
628 adding foo.whole |
37798
8fa3396a832d
test-fix: fix use of 'f --newer' to check that foo.whole is not updated
Yuya Nishihara <yuya@tcha.org>
parents:
37791
diff
changeset
|
629 $ cp -p foo.whole foo.whole.orig |
37809
80695628adcb
test-fix: normalize precision of mtime copied by 'cp -p'
Yuya Nishihara <yuya@tcha.org>
parents:
37798
diff
changeset
|
630 $ cp -p foo.whole.orig foo.whole |
37593
314f39e5fa86
tests: use `f --newer` instead of `stat -c` in test-fix.t
Augie Fackler <augie@google.com>
parents:
37560
diff
changeset
|
631 $ sleep 2 # mtime has a resolution of one or two seconds. |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
632 $ hg fix --working-dir |
37798
8fa3396a832d
test-fix: fix use of 'f --newer' to check that foo.whole is not updated
Yuya Nishihara <yuya@tcha.org>
parents:
37791
diff
changeset
|
633 $ f foo.whole.orig --newer foo.whole |
8fa3396a832d
test-fix: fix use of 'f --newer' to check that foo.whole is not updated
Yuya Nishihara <yuya@tcha.org>
parents:
37791
diff
changeset
|
634 foo.whole.orig: newer than foo.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
635 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
636 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
637 |
38967
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
638 When a fixer prints to stderr, we don't assume that it has failed. We show the |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
639 error messages to the user, and we still let the fixer affect the file it was |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
640 fixing if its exit code is zero. Some code formatters might emit error messages |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
641 on stderr and nothing on stdout, which would cause us the clear the file, |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
642 except that they also exit with a non-zero code. We show the user which fixer |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
643 emitted the stderr, and which revision, but we assume that the fixer will print |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
644 the filename if it is relevant (since the issue may be non-specific). There is |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
645 also a config to abort (without affecting any files whatsoever) if we see any |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
646 tool with a non-zero exit status. |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
647 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
648 $ hg init showstderr |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
649 $ cd showstderr |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
650 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
651 $ printf "hello\n" > hello.txt |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
652 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
653 adding hello.txt |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
654 $ cat > $TESTTMP/work.sh <<'EOF' |
37791
72ccb0716302
tests: stabilize test-fix.t for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
37595
diff
changeset
|
655 > printf 'HELLO\n' |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
656 > printf "$@: some\nerror that didn't stop the tool" >&2 |
38967
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
657 > exit 0 # success despite the stderr output |
37791
72ccb0716302
tests: stabilize test-fix.t for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
37595
diff
changeset
|
658 > EOF |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
659 $ hg --config "fix.work:command=sh $TESTTMP/work.sh {rootpath}" \ |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
660 > --config "fix.work:pattern=hello.txt" \ |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
661 > fix --working-dir |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
662 [wdir] work: hello.txt: some |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
663 [wdir] work: error that didn't stop the tool |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
664 $ cat hello.txt |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
665 HELLO |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
666 |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
667 $ printf "goodbye\n" > hello.txt |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
668 $ printf "foo\n" > foo.whole |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
669 $ hg add |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
670 adding foo.whole |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
671 $ cat > $TESTTMP/fail.sh <<'EOF' |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
672 > printf 'GOODBYE\n' |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
673 > printf "$@: some\nerror that did stop the tool\n" >&2 |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
674 > exit 42 # success despite the stdout output |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
675 > EOF |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
676 $ hg --config "fix.fail:command=sh $TESTTMP/fail.sh {rootpath}" \ |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
677 > --config "fix.fail:pattern=hello.txt" \ |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
678 > --config "fix.failure=abort" \ |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
679 > fix --working-dir |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
680 [wdir] fail: hello.txt: some |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
681 [wdir] fail: error that did stop the tool |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
682 abort: no fixes will be applied |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
683 (use --config fix.failure=continue to apply any successful fixes anyway) |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
684 [255] |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
685 $ cat hello.txt |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
686 goodbye |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
687 $ cat foo.whole |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
688 foo |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
689 |
38967
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
690 $ hg --config "fix.fail:command=sh $TESTTMP/fail.sh {rootpath}" \ |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
691 > --config "fix.fail:pattern=hello.txt" \ |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
692 > fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
693 [wdir] fail: hello.txt: some |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
694 [wdir] fail: error that did stop the tool |
38967
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
695 $ cat hello.txt |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
696 goodbye |
40532
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
697 $ cat foo.whole |
93bab80993f4
fix: add a config to abort when a fixer tool fails
Danny Hooper <hooper@google.com>
parents:
39707
diff
changeset
|
698 FOO |
38967
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
699 |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
700 $ hg --config "fix.fail:command=exit 42" \ |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
701 > --config "fix.fail:pattern=hello.txt" \ |
38967
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
702 > fix --working-dir |
a009589cd32a
fix: determine fixer tool failure by exit code instead of stderr
Danny Hooper <hooper@google.com>
parents:
38590
diff
changeset
|
703 [wdir] fail: exited with status 42 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
704 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
705 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
706 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
707 Fixing the working directory and its parent revision at the same time should |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
708 check out the replacement revision for the parent. This prevents any new |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
709 uncommitted changes from appearing. We test this for a clean working directory |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
710 and a dirty one. In both cases, all lines/files changed since the grandparent |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
711 will be fixed. The grandparent is the "baserev" for both the parent and the |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
712 working copy. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
713 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
714 $ hg init fixdotandcleanwdir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
715 $ cd fixdotandcleanwdir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
716 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
717 $ printf "hello\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
718 $ printf "world\n" > world.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
719 $ hg commit -Aqm "the parent commit" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
720 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
721 $ hg parents --template '{rev} {desc}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
722 0 the parent commit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
723 $ hg fix --working-dir -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
724 $ hg parents --template '{rev} {desc}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
725 1 the parent commit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
726 $ hg cat -r . *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
727 HELLO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
728 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
729 $ cat *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
730 HELLO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
731 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
732 $ hg status |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
733 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
734 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
735 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
736 Same test with a dirty working copy. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
737 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
738 $ hg init fixdotanddirtywdir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
739 $ cd fixdotanddirtywdir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
740 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
741 $ printf "hello\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
742 $ printf "world\n" > world.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
743 $ hg commit -Aqm "the parent commit" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
744 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
745 $ printf "hello,\n" > hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
746 $ printf "world!\n" > world.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
747 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
748 $ hg parents --template '{rev} {desc}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
749 0 the parent commit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
750 $ hg fix --working-dir -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
751 $ hg parents --template '{rev} {desc}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
752 1 the parent commit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
753 $ hg cat -r . *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
754 HELLO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
755 WORLD |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
756 $ cat *.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
757 HELLO, |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
758 WORLD! |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
759 $ hg status |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
760 M hello.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
761 M world.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
762 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
763 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
764 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
765 When we have a chain of commits that change mutually exclusive lines of code, |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
766 we should be able to do incremental fixing that causes each commit in the chain |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
767 to include fixes made to the previous commits. This prevents children from |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
768 backing out the fixes made in their parents. A dirty working directory is |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
769 conceptually similar to another commit in the chain. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
770 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
771 $ hg init incrementallyfixchain |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
772 $ cd incrementallyfixchain |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
773 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
774 $ cat > file.changed <<EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
775 > first |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
776 > second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
777 > third |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
778 > fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
779 > fifth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
780 > EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
781 $ hg commit -Aqm "the common ancestor (the baserev)" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
782 $ cat > file.changed <<EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
783 > first (changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
784 > second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
785 > third |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
786 > fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
787 > fifth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
788 > EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
789 $ hg commit -Aqm "the first commit to fix" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
790 $ cat > file.changed <<EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
791 > first (changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
792 > second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
793 > third (changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
794 > fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
795 > fifth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
796 > EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
797 $ hg commit -Aqm "the second commit to fix" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
798 $ cat > file.changed <<EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
799 > first (changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
800 > second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
801 > third (changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
802 > fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
803 > fifth (changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
804 > EOF |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
805 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
806 $ hg fix -r . -r '.^' --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
807 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
808 $ hg parents --template '{rev}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
809 4 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
810 $ hg cat -r '.^^' file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
811 first |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
812 second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
813 third |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
814 fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
815 fifth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
816 $ hg cat -r '.^' file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
817 FIRST (CHANGED) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
818 second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
819 third |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
820 fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
821 fifth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
822 $ hg cat -r . file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
823 FIRST (CHANGED) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
824 second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
825 THIRD (CHANGED) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
826 fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
827 fifth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
828 $ cat file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
829 FIRST (CHANGED) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
830 second |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
831 THIRD (CHANGED) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
832 fourth |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
833 FIFTH (CHANGED) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
834 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
835 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
836 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
837 If we incrementally fix a merge commit, we should fix any lines that changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
838 versus either parent. You could imagine only fixing the intersection or some |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
839 other subset, but this is necessary if either parent is being fixed. It |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
840 prevents us from forgetting fixes made in either parent. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
841 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
842 $ hg init incrementallyfixmergecommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
843 $ cd incrementallyfixmergecommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
844 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
845 $ printf "a\nb\nc\n" > file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
846 $ hg commit -Aqm "ancestor" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
847 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
848 $ printf "aa\nb\nc\n" > file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
849 $ hg commit -m "change a" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
850 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
851 $ hg checkout '.^' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
852 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
853 $ printf "a\nb\ncc\n" > file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
854 $ hg commit -m "change c" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
855 created new head |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
856 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
857 $ hg merge |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
858 merging file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
859 0 files updated, 1 files merged, 0 files removed, 0 files unresolved |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
860 (branch merge, don't forget to commit) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
861 $ hg commit -m "merge" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
862 $ hg cat -r . file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
863 aa |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
864 b |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
865 cc |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
866 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
867 $ hg fix -r . --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
868 $ hg cat -r . file.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
869 AA |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
870 b |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
871 CC |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
872 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
873 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
874 |
47886
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
875 We should be allowed to fix the working (and only the working copy) while |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
876 merging. |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
877 |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
878 $ hg init fixworkingcopywhilemerging |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
879 $ cd fixworkingcopywhilemerging |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
880 |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
881 $ printf "a\nb\nc\n" > file.changed |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
882 $ hg commit -Aqm "ancestor" |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
883 |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
884 $ printf "aa\nb\nc\n" > file.changed |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
885 $ hg commit -m "change a" |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
886 |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
887 $ hg checkout '.^' |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
888 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
889 $ printf "a\nb\ncc\n" > file.changed |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
890 $ hg commit -m "change c" |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
891 created new head |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
892 |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
893 $ hg merge |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
894 merging file.changed |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
895 0 files updated, 1 files merged, 0 files removed, 0 files unresolved |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
896 (branch merge, don't forget to commit) |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
897 $ cat file.changed |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
898 aa |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
899 b |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
900 cc |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
901 Not allowed to fix a parent of the working copy while merging |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
902 $ hg fix -r . --working-dir |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
903 abort: outstanding uncommitted merge |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
904 (use 'hg commit' or 'hg merge --abort') |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
905 [20] |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
906 $ hg fix --working-dir |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
907 $ cat file.changed |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
908 AA |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
909 b |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
910 CC |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
911 |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
912 $ cd .. |
86a60679cf61
fix: again allow formatting the working copy while merging
Martin von Zweigbergk <martinvonz@google.com>
parents:
47767
diff
changeset
|
913 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
914 Abort fixing revisions if there is an unfinished operation. We don't want to |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
915 make things worse by editing files or stripping/obsoleting things. Also abort |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
916 fixing the working directory if there are unresolved merge conflicts. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
917 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
918 $ hg init abortunresolved |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
919 $ cd abortunresolved |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
920 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
921 $ echo "foo1" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
922 $ hg commit -Aqm "foo 1" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
923 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
924 $ hg update null |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
925 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
926 $ echo "foo2" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
927 $ hg commit -Aqm "foo 2" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
928 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
929 $ hg --config extensions.rebase= rebase -r 1 -d 0 |
45771
f90a5c211251
rebase: change and standarize template for rebase's one-line summary
Martin von Zweigbergk <martinvonz@google.com>
parents:
45218
diff
changeset
|
930 rebasing 1:c3b6dc0e177a tip "foo 2" |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
931 merging foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
932 warning: conflicts while merging foo.whole! (edit, then use 'hg resolve --mark') |
45150
dc5e5577af39
error: unify the error message formats for 'rebase' and 'unshelve'
Daniel Ploch <dploch@google.com>
parents:
44575
diff
changeset
|
933 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
45826
21733e8c924f
errors: add config that lets user get more detailed exit codes
Martin von Zweigbergk <martinvonz@google.com>
parents:
45807
diff
changeset
|
934 [240] |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
935 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
936 $ hg --config extensions.rebase= fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
937 abort: unresolved conflicts |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
938 (use 'hg resolve') |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
939 [255] |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
940 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
941 $ hg --config extensions.rebase= fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
942 abort: rebase in progress |
45215
a253ded5b03d
morestatus: mention --stop even if not using --verbose
Kyle Lippincott <spectral@google.com>
parents:
45150
diff
changeset
|
943 (use 'hg rebase --continue', 'hg rebase --abort', or 'hg rebase --stop') |
45840
527ce85c2e60
errors: introduce StateError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents:
45826
diff
changeset
|
944 [20] |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
945 |
42363
b02f3aa2fab5
test: add missing 'cd ..' to test case
Danny Hooper <hooper@google.com>
parents:
42194
diff
changeset
|
946 $ cd .. |
b02f3aa2fab5
test: add missing 'cd ..' to test case
Danny Hooper <hooper@google.com>
parents:
42194
diff
changeset
|
947 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
948 When fixing a file that was renamed, we should diff against the source of the |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
949 rename for incremental fixing and we should correctly reproduce the rename in |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
950 the replacement revision. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
951 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
952 $ hg init fixrenamecommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
953 $ cd fixrenamecommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
954 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
955 $ printf "a\nb\nc\n" > source.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
956 $ hg commit -Aqm "source revision" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
957 $ hg move source.changed dest.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
958 $ printf "a\nb\ncc\n" > dest.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
959 $ hg commit -m "dest revision" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
960 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
961 $ hg fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
962 $ hg log -r tip --copies --template "{file_copies}\n" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
963 dest.changed (source.changed) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
964 $ hg cat -r tip dest.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
965 a |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
966 b |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
967 CC |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
968 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
969 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
970 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
971 When fixing revisions that remove files we must ensure that the replacement |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
972 actually removes the file, whereas it could accidentally leave it unchanged or |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
973 write an empty string to it. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
974 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
975 $ hg init fixremovedfile |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
976 $ cd fixremovedfile |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
977 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
978 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
979 $ printf "bar\n" > bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
980 $ hg commit -Aqm "add files" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
981 $ hg remove bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
982 $ hg commit -m "remove file" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
983 $ hg status --change . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
984 R bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
985 $ hg fix -r . foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
986 $ hg status --change tip |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
987 M foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
988 R bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
989 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
990 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
991 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
992 If fixing a revision finds no fixes to make, no replacement revision should be |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
993 created. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
994 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
995 $ hg init nofixesneeded |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
996 $ cd nofixesneeded |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
997 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
998 $ printf "FOO\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
999 $ hg commit -Aqm "add file" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1000 $ hg log --template '{rev}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1001 0 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1002 $ hg fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1003 $ hg log --template '{rev}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1004 0 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1005 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1006 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1007 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1008 If fixing a commit reverts all the changes in the commit, we replace it with a |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1009 commit that changes no files. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1010 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1011 $ hg init nochangesleft |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1012 $ cd nochangesleft |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1013 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1014 $ printf "FOO\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1015 $ hg commit -Aqm "add file" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1016 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1017 $ hg commit -m "edit file" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1018 $ hg status --change . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1019 M foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1020 $ hg fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1021 $ hg status --change tip |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1022 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1023 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1024 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1025 If we fix a parent and child revision together, the child revision must be |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1026 replaced if the parent is replaced, even if the diffs of the child needed no |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1027 fixes. However, we're free to not replace revisions that need no fixes and have |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1028 no ancestors that are replaced. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1029 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1030 $ hg init mustreplacechild |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1031 $ cd mustreplacechild |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1032 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1033 $ printf "FOO\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1034 $ hg commit -Aqm "add foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1035 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1036 $ hg commit -m "edit foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1037 $ printf "BAR\n" > bar.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1038 $ hg commit -Aqm "add bar" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1039 |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1040 $ hg log --graph --template '{rev} {files}' |
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1041 @ 2 bar.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1042 | |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1043 o 1 foo.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1044 | |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1045 o 0 foo.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1046 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1047 $ hg fix -r 0:2 |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1048 $ hg log --graph --template '{rev} {files}' |
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1049 o 4 bar.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1050 | |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1051 o 3 |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1052 | |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1053 | @ 2 bar.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1054 | | |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1055 | x 1 foo.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1056 |/ |
40569
19e1c26213f1
cleanup: use revision numbers instead of hashes in test output
Danny Hooper <hooper@google.com>
parents:
40566
diff
changeset
|
1057 o 0 foo.whole |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1058 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1059 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1060 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1061 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1062 It's also possible that the child needs absolutely no changes, but we still |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1063 need to replace it to update its parent. If we skipped replacing the child |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1064 because it had no file content changes, it would become an orphan for no good |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1065 reason. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1066 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1067 $ hg init mustreplacechildevenifnop |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1068 $ cd mustreplacechildevenifnop |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1069 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1070 $ printf "Foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1071 $ hg commit -Aqm "add a bad foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1072 $ printf "FOO\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1073 $ hg commit -m "add a good foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1074 $ hg fix -r . -r '.^' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1075 $ hg log --graph --template '{rev} {desc}' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1076 o 3 add a good foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1077 | |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1078 o 2 add a bad foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1079 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1080 @ 1 add a good foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1081 | |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1082 x 0 add a bad foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1083 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1084 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1085 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1086 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1087 Similar to the case above, the child revision may become empty as a result of |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1088 fixing its parent. We should still create an empty replacement child. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1089 TODO: determine how this should interact with ui.allowemptycommit given that |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1090 the empty replacement could have children. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1091 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1092 $ hg init mustreplacechildevenifempty |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1093 $ cd mustreplacechildevenifempty |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1094 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1095 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1096 $ hg commit -Aqm "add foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1097 $ printf "Foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1098 $ hg commit -m "edit foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1099 $ hg fix -r . -r '.^' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1100 $ hg log --graph --template '{rev} {desc}\n' --stat |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1101 o 3 edit foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1102 | |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1103 o 2 add foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1104 foo.whole | 1 + |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1105 1 files changed, 1 insertions(+), 0 deletions(-) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1106 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1107 @ 1 edit foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1108 | foo.whole | 2 +- |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1109 | 1 files changed, 1 insertions(+), 1 deletions(-) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1110 | |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1111 x 0 add foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1112 foo.whole | 1 + |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1113 1 files changed, 1 insertions(+), 0 deletions(-) |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1114 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1115 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1116 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1117 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1118 Fixing a secret commit should replace it with another secret commit. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1119 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1120 $ hg init fixsecretcommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1121 $ cd fixsecretcommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1122 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1123 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1124 $ hg commit -Aqm "add foo" --secret |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1125 $ hg fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1126 $ hg log --template '{rev} {phase}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1127 1 secret |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1128 0 secret |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1129 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1130 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1131 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1132 We should also preserve phase when fixing a draft commit while the user has |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1133 their default set to secret. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1134 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1135 $ hg init respectphasesnewcommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1136 $ cd respectphasesnewcommit |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1137 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1138 $ printf "foo\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1139 $ hg commit -Aqm "add foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1140 $ hg --config phases.newcommit=secret fix -r . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1141 $ hg log --template '{rev} {phase}\n' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1142 1 draft |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1143 0 draft |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1144 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1145 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1146 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1147 Debug output should show what fixer commands are being subprocessed, which is |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1148 useful for anyone trying to set up a new config. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1149 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1150 $ hg init debugoutput |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1151 $ cd debugoutput |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1152 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1153 $ printf "foo\nbar\nbaz\n" > foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1154 $ hg commit -Aqm "foo" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1155 $ printf "Foo\nbar\nBaz\n" > foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1156 $ hg --debug fix --working-dir |
49977
b5ecd0bcbcd7
fix: add more information to the debug output
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48672
diff
changeset
|
1157 fixing: f65cf3136d41+ - uppercase-changed-lines - foo.changed |
37560
41ba336d9f1e
fix: use a portable python script instead of sed in test
Danny Hooper <hooper@google.com>
parents:
37183
diff
changeset
|
1158 subprocess: * $TESTTMP/uppercase.py 1-1 3-3 (glob) |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1159 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1160 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1161 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1162 Fixing an obsolete revision can cause divergence, so we abort unless the user |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1163 configures to allow it. This is not yet smart enough to know whether there is a |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1164 successor, but even then it is not likely intentional or idiomatic to fix an |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1165 obsolete revision. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1166 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1167 $ hg init abortobsoleterev |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1168 $ cd abortobsoleterev |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1169 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1170 $ printf "foo\n" > foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1171 $ hg commit -Aqm "foo" |
46838
d083c12032c6
tests: update divergence test for `hg fix` to actually result in divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
45853
diff
changeset
|
1172 $ hg ci --amend -m rewritten |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1173 $ hg --hidden fix -r 0 |
48672
657e490756e6
fix: remove unnecessary and overly strict check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
48346
diff
changeset
|
1174 abort: cannot fix b87e30dbf19b, as that creates content-divergence with 2e007a78dfb8 |
657e490756e6
fix: remove unnecessary and overly strict check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
48346
diff
changeset
|
1175 (add --verbose for details or see 'hg help evolution.instability') |
657e490756e6
fix: remove unnecessary and overly strict check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
48346
diff
changeset
|
1176 [10] |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1177 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1178 $ hg --hidden fix -r 0 --config experimental.evolution.allowdivergence=true |
46838
d083c12032c6
tests: update divergence test for `hg fix` to actually result in divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
45853
diff
changeset
|
1179 2 new content-divergent changesets |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1180 $ hg cat -r tip foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1181 FOO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1182 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1183 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1184 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1185 Test all of the available substitution values for fixer commands. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1186 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1187 $ hg init substitution |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1188 $ cd substitution |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1189 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1190 $ mkdir foo |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1191 $ printf "hello\ngoodbye\n" > foo/bar |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1192 $ hg add |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1193 adding foo/bar |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1194 $ hg --config "fix.fail:command=printf '%s\n' '{rootpath}' '{basename}'" \ |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1195 > --config "fix.fail:linerange='{first}' '{last}'" \ |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
1196 > --config "fix.fail:pattern=foo/bar" \ |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1197 > fix --working-dir |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1198 $ cat foo/bar |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1199 foo/bar |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1200 bar |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1201 1 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1202 2 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1203 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1204 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1205 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1206 The --base flag should allow picking the revisions to diff against for changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1207 files and incremental line formatting. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1208 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1209 $ hg init baseflag |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1210 $ cd baseflag |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1211 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1212 $ printf "one\ntwo\n" > foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1213 $ printf "bar\n" > bar.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1214 $ hg commit -Aqm "first" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1215 $ printf "one\nTwo\n" > foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1216 $ hg commit -m "second" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1217 $ hg fix -w --base . |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1218 $ hg status |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1219 $ hg fix -w --base null |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1220 $ cat foo.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1221 ONE |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1222 TWO |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1223 $ cat bar.changed |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1224 BAR |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1225 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1226 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1227 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1228 If the user asks to fix the parent of another commit, they are asking to create |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1229 an orphan. We must respect experimental.evolution.allowunstable. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1230 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1231 $ hg init allowunstable |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1232 $ cd allowunstable |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1233 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1234 $ printf "one\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1235 $ hg commit -Aqm "first" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1236 $ printf "two\n" > foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1237 $ hg commit -m "second" |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1238 $ hg --config experimental.evolution.allowunstable=False fix -r '.^' |
47070
d90f6237b3aa
rewriteutil: say how many commits would become orphan if commit is rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47069
diff
changeset
|
1239 abort: cannot fix changeset, as that will orphan 1 descendants |
47018
7a90fddb13b0
rewriteutil: point to help about instability when rewriting creates orphan
Martin von Zweigbergk <martinvonz@google.com>
parents:
46838
diff
changeset
|
1240 (see 'hg help evolution.instability') |
45853
b4694ef45db5
errors: raise more specific errors from rewriteutil
Martin von Zweigbergk <martinvonz@google.com>
parents:
45840
diff
changeset
|
1241 [10] |
37183
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1242 $ hg fix -r '.^' |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1243 1 new orphan changesets |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1244 $ hg cat -r 2 foo.whole |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1245 ONE |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1246 |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1247 $ cd .. |
ded5ea279a93
fix: new extension for automatically modifying file contents
Danny Hooper <hooper@google.com>
parents:
diff
changeset
|
1248 |
38590
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1249 The --base flag affects the set of files being fixed. So while the --whole flag |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1250 makes the base irrelevant for changed line ranges, it still changes the |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1251 meaning and effect of the command. In this example, no files or lines are fixed |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1252 until we specify the base, but then we do fix unchanged lines. |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1253 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1254 $ hg init basewhole |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1255 $ cd basewhole |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1256 $ printf "foo1\n" > foo.changed |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1257 $ hg commit -Aqm "first" |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1258 $ printf "foo2\n" >> foo.changed |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1259 $ printf "bar\n" > bar.changed |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1260 $ hg commit -Aqm "second" |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1261 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1262 $ hg fix --working-dir --whole |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1263 $ cat *.changed |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1264 bar |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1265 foo1 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1266 foo2 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1267 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1268 $ hg fix --working-dir --base 0 --whole |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1269 $ cat *.changed |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1270 BAR |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1271 FOO1 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1272 FOO2 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1273 |
f068495a1c28
fix: add test case that shows why --whole with --base is useful
Danny Hooper <hooper@google.com>
parents:
37809
diff
changeset
|
1274 $ cd .. |
40533
2ecf5c24d0cd
fix: rename :fileset subconfig to :pattern
Danny Hooper <hooper@google.com>
parents:
40532
diff
changeset
|
1275 |
40566
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1276 The execution order of tools can be controlled. This example doesn't work if |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1277 you sort after truncating, but the config defines the correct order while the |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1278 definitions are out of order (which might imply the incorrect order given the |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1279 implementation of fix). The goal is to use multiple tools to select the lowest |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1280 5 numbers in the file. |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1281 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1282 $ hg init priorityexample |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1283 $ cd priorityexample |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1284 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1285 $ cat >> .hg/hgrc <<EOF |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1286 > [fix] |
41126
d8f5c615e811
tests: use more portable flags in test-fix.t
Danny Hooper <hooper@google.com>
parents:
41010
diff
changeset
|
1287 > head:command = head -n 5 |
40566
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1288 > head:pattern = numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1289 > head:priority = 1 |
41126
d8f5c615e811
tests: use more portable flags in test-fix.t
Danny Hooper <hooper@google.com>
parents:
41010
diff
changeset
|
1290 > sort:command = sort -n |
40566
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1291 > sort:pattern = numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1292 > sort:priority = 2 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1293 > EOF |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1294 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1295 $ printf "8\n2\n3\n6\n7\n4\n9\n5\n1\n0\n" > numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1296 $ hg add -q |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1297 $ hg fix -w |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1298 $ cat numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1299 0 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1300 1 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1301 2 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1302 3 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1303 4 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1304 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1305 And of course we should be able to break this by reversing the execution order. |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1306 Test negative priorities while we're at it. |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1307 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1308 $ cat >> .hg/hgrc <<EOF |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1309 > [fix] |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1310 > head:priority = -1 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1311 > sort:priority = -2 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1312 > EOF |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1313 $ printf "8\n2\n3\n6\n7\n4\n9\n5\n1\n0\n" > numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1314 $ hg fix -w |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1315 $ cat numbers.txt |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1316 2 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1317 3 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1318 6 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1319 7 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1320 8 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1321 |
b9557567cc3f
fix: add suboption for configuring execution order of tools
Danny Hooper <hooper@google.com>
parents:
40564
diff
changeset
|
1322 $ cd .. |
40570
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1323 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1324 It's possible for repeated applications of a fixer tool to create cycles in the |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1325 generated content of a file. For example, two users with different versions of |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1326 a code formatter might fight over the formatting when they run hg fix. In the |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1327 absence of other changes, this means we could produce commits with the same |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1328 hash in subsequent runs of hg fix. This is a problem unless we support |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1329 obsolescence cycles well. We avoid this by adding an extra field to the |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1330 successor which forces it to have a new hash. That's why this test creates |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1331 three revisions instead of two. |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1332 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1333 $ hg init cyclictool |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1334 $ cd cyclictool |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1335 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1336 $ cat >> .hg/hgrc <<EOF |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1337 > [fix] |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1338 > swapletters:command = tr ab ba |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1339 > swapletters:pattern = foo |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1340 > EOF |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1341 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1342 $ echo ab > foo |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1343 $ hg commit -Aqm foo |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1344 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1345 $ hg fix -r 0 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1346 $ hg fix -r 1 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1347 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1348 $ hg cat -r 0 foo --hidden |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1349 ab |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1350 $ hg cat -r 1 foo --hidden |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1351 ba |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1352 $ hg cat -r 2 foo |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1353 ab |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1354 |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1355 $ cd .. |
ad71c792a8d8
fix: add extra field to fixed revisions to avoid creating obsolescence cycles
Danny Hooper <hooper@google.com>
parents:
40569
diff
changeset
|
1356 |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1357 We run fixer tools in the repo root so they can look for config files or other |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1358 important things in the working directory. This does NOT mean we are |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1359 reconstructing a working copy of every revision being fixed; we're just giving |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1360 the tool knowledge of the repo's location in case it can do something |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1361 reasonable with that. |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1362 |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1363 $ hg init subprocesscwd |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1364 $ cd subprocesscwd |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1365 |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1366 $ cat >> .hg/hgrc <<EOF |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1367 > [fix] |
42938
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1368 > printcwd:command = "$PYTHON" -c "import os; print(os.getcwd())" |
43226
5272bd7e7517
tests: add test showing that fixer patterns are currently relative to $PWD
Martin von Zweigbergk <martinvonz@google.com>
parents:
43220
diff
changeset
|
1369 > printcwd:pattern = relpath:foo/bar |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1370 > filesetpwd:command = "$PYTHON" -c "import os; print('fs: ' + os.getcwd())" |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1371 > filesetpwd:pattern = set:**quux |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1372 > EOF |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1373 |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1374 $ mkdir foo |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1375 $ printf "bar\n" > foo/bar |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1376 $ printf "quux\n" > quux |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1377 $ hg commit -Aqm blah |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1378 |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1379 $ hg fix -w -r . foo/bar |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1380 $ hg cat -r tip foo/bar |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1381 $TESTTMP/subprocesscwd |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1382 $ cat foo/bar |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1383 $TESTTMP/subprocesscwd |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1384 |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1385 $ cd foo |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1386 |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1387 $ hg fix -w -r . bar |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1388 $ hg cat -r tip bar ../quux |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1389 $TESTTMP/subprocesscwd |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1390 quux |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1391 $ cat bar ../quux |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1392 $TESTTMP/subprocesscwd |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1393 quux |
43226
5272bd7e7517
tests: add test showing that fixer patterns are currently relative to $PWD
Martin von Zweigbergk <martinvonz@google.com>
parents:
43220
diff
changeset
|
1394 $ echo modified > bar |
5272bd7e7517
tests: add test showing that fixer patterns are currently relative to $PWD
Martin von Zweigbergk <martinvonz@google.com>
parents:
43220
diff
changeset
|
1395 $ hg fix -w bar |
5272bd7e7517
tests: add test showing that fixer patterns are currently relative to $PWD
Martin von Zweigbergk <martinvonz@google.com>
parents:
43220
diff
changeset
|
1396 $ cat bar |
43227
f02d3c0eed18
fix: match patterns relative to root
Martin von Zweigbergk <martinvonz@google.com>
parents:
43226
diff
changeset
|
1397 $TESTTMP/subprocesscwd |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1398 |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1399 Apparently fixing p1() and its descendants doesn't include wdir() unless |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1400 explicitly stated. |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1401 |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1402 $ hg fix -r '.::' |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1403 $ hg cat -r . ../quux |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1404 quux |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1405 $ hg cat -r tip ../quux |
44009
e685fac56693
match: resolve filesets against the passed `cwd`, not the current one
Matt Harbison <matt_harbison@yahoo.com>
parents:
43962
diff
changeset
|
1406 fs: $TESTTMP/subprocesscwd |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1407 $ cat ../quux |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1408 quux |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1409 |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1410 Clean files are not fixed unless explicitly named |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1411 $ echo 'dirty' > ../quux |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1412 |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1413 $ hg fix --working-dir |
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1414 $ cat ../quux |
44009
e685fac56693
match: resolve filesets against the passed `cwd`, not the current one
Matt Harbison <matt_harbison@yahoo.com>
parents:
43962
diff
changeset
|
1415 fs: $TESTTMP/subprocesscwd |
43948
9595b6a9f0d5
tests: show that fileset patterns don't work with `fix` when not in repo root
Matt Harbison <matt_harbison@yahoo.com>
parents:
43936
diff
changeset
|
1416 |
42673
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1417 $ cd ../.. |
74b4cd091e0d
fix: run fixer tools in the repo root as cwd so they can use the working copy
Danny Hooper <hooper@google.com>
parents:
42663
diff
changeset
|
1418 |
42655
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1419 Tools configured without a pattern are ignored. It would be too dangerous to |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1420 run them on all files, because this might happen while testing a configuration |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1421 that also deletes all of the file content. There is no reasonable subset of the |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1422 files to use as a default. Users should be explicit about what files are |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1423 affected by a tool. This test also confirms that we don't crash when the |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1424 pattern config is missing, and that we only warn about it once. |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1425 |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1426 $ hg init nopatternconfigured |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1427 $ cd nopatternconfigured |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1428 |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1429 $ printf "foo" > foo |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1430 $ printf "bar" > bar |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1431 $ hg add -q |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1432 $ hg fix --debug --working-dir --config "fix.nopattern:command=echo fixed" |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1433 fixer tool has no pattern configuration: nopattern |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1434 $ cat foo bar |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1435 foobar (no-eol) |
43220
d3d1a3afe7aa
fix: warn when a fixer doesn't have a configured command
Martin von Zweigbergk <martinvonz@google.com>
parents:
43058
diff
changeset
|
1436 $ hg fix --debug --working-dir --config "fix.nocommand:pattern=foo.bar" |
d3d1a3afe7aa
fix: warn when a fixer doesn't have a configured command
Martin von Zweigbergk <martinvonz@google.com>
parents:
43058
diff
changeset
|
1437 fixer tool has no command configuration: nocommand |
42655
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1438 |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1439 $ cd .. |
2987d015aba4
fix: ignore fixer tool configurations that are missing patterns
Danny Hooper <hooper@google.com>
parents:
42654
diff
changeset
|
1440 |
43058
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1441 Tools can be disabled. Disabled tools do nothing but print a debug message. |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1442 |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1443 $ hg init disabled |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1444 $ cd disabled |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1445 |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1446 $ printf "foo\n" > foo |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1447 $ hg add -q |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1448 $ hg fix --debug --working-dir --config "fix.disabled:command=echo fixed" \ |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1449 > --config "fix.disabled:pattern=foo" \ |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1450 > --config "fix.disabled:enabled=false" |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1451 ignoring disabled fixer tool: disabled |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1452 $ cat foo |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1453 foo |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1454 |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1455 $ cd .. |
808a57a08470
fix: add :enabled sub-config for fixer tools
Danny Hooper <hooper@google.com>
parents:
42938
diff
changeset
|
1456 |
42654
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1457 Test that we can configure a fixer to affect all files regardless of the cwd. |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1458 The way we invoke matching must not prohibit this. |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1459 |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1460 $ hg init affectallfiles |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1461 $ cd affectallfiles |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1462 |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1463 $ mkdir foo bar |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1464 $ printf "foo" > foo/file |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1465 $ printf "bar" > bar/file |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1466 $ printf "baz" > baz_file |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1467 $ hg add -q |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1468 |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1469 $ cd bar |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1470 $ hg fix --working-dir --config "fix.cooltool:command=echo fixed" \ |
43226
5272bd7e7517
tests: add test showing that fixer patterns are currently relative to $PWD
Martin von Zweigbergk <martinvonz@google.com>
parents:
43220
diff
changeset
|
1471 > --config "fix.cooltool:pattern=glob:**" |
42654
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1472 $ cd .. |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1473 |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1474 $ cat foo/file |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1475 fixed |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1476 $ cat bar/file |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1477 fixed |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1478 $ cat baz_file |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1479 fixed |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1480 |
22c4bd7d1cbf
fix: add a test case around the effect of cwd on pattern matching
Danny Hooper <hooper@google.com>
parents:
42653
diff
changeset
|
1481 $ cd .. |
42756
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1482 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1483 Tools should be able to run on unchanged files, even if they set :linerange. |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1484 This includes a corner case where deleted chunks of a file are not considered |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1485 changes. |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1486 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1487 $ hg init skipclean |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1488 $ cd skipclean |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1489 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1490 $ printf "a\nb\nc\n" > foo |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1491 $ printf "a\nb\nc\n" > bar |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1492 $ printf "a\nb\nc\n" > baz |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1493 $ hg commit -Aqm "base" |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1494 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1495 $ printf "a\nc\n" > foo |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1496 $ printf "a\nx\nc\n" > baz |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1497 |
42938
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1498 $ cat >> print.py <<EOF |
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1499 > import sys |
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1500 > for a in sys.argv[1:]: |
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1501 > print(a) |
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1502 > EOF |
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1503 |
42756
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1504 $ hg fix --working-dir foo bar baz \ |
42938
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1505 > --config "fix.changedlines:command=\"$PYTHON\" print.py \"Line ranges:\"" \ |
a2dffe68b4ea
tests: stabilize test-fix.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
42893
diff
changeset
|
1506 > --config 'fix.changedlines:linerange="{first} through {last}"' \ |
43226
5272bd7e7517
tests: add test showing that fixer patterns are currently relative to $PWD
Martin von Zweigbergk <martinvonz@google.com>
parents:
43220
diff
changeset
|
1507 > --config 'fix.changedlines:pattern=glob:**' \ |
42756
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1508 > --config 'fix.changedlines:skipclean=false' |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1509 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1510 $ cat foo |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1511 Line ranges: |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1512 $ cat bar |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1513 Line ranges: |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1514 $ cat baz |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1515 Line ranges: |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1516 2 through 2 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1517 |
ed0da6e0d6ee
fix: allow tools to use :linerange, but also run if a file is unchanged
Danny Hooper <hooper@google.com>
parents:
42673
diff
changeset
|
1518 $ cd .. |
43962
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1519 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1520 Test various cases around merges. We were previously dropping files if they were |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1521 created on only the p2 side of the merge, so let's test permutations of: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1522 * added, was fixed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1523 * added, considered for fixing but was already good |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1524 * added, not considered for fixing |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1525 * modified, was fixed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1526 * modified, considered for fixing but was already good |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1527 * modified, not considered for fixing |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1528 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1529 Before the bug was fixed where we would drop files, this test demonstrated the |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1530 following issues: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1531 * new_in_r1.ignored, new_in_r1_already_good.changed, and |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1532 > mod_in_r1_already_good.changed were NOT in the manifest for the merge commit |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1533 * mod_in_r1.ignored had its contents from r0, NOT r1. |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1534 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1535 We're also setting a named branch for every commit to demonstrate that the |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1536 branch is kept intact and there aren't issues updating to another branch in the |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1537 middle of fix. |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1538 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1539 $ hg init merge_keeps_files |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1540 $ cd merge_keeps_files |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1541 $ for f in r0 mod_in_r1 mod_in_r2 mod_in_merge mod_in_child; do |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1542 > for c in changed whole ignored; do |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1543 > printf "hello\n" > $f.$c |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1544 > done |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1545 > printf "HELLO\n" > "mod_in_${f}_already_good.changed" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1546 > done |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1547 $ hg branch -q r0 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1548 $ hg ci -Aqm 'r0' |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1549 $ hg phase -p |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1550 $ make_test_files() { |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1551 > printf "world\n" >> "mod_in_$1.changed" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1552 > printf "world\n" >> "mod_in_$1.whole" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1553 > printf "world\n" >> "mod_in_$1.ignored" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1554 > printf "WORLD\n" >> "mod_in_$1_already_good.changed" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1555 > printf "new in $1\n" > "new_in_$1.changed" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1556 > printf "new in $1\n" > "new_in_$1.whole" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1557 > printf "new in $1\n" > "new_in_$1.ignored" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1558 > printf "ALREADY GOOD, NEW IN THIS REV\n" > "new_in_$1_already_good.changed" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1559 > } |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1560 $ make_test_commit() { |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1561 > make_test_files "$1" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1562 > hg branch -q "$1" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1563 > hg ci -Aqm "$2" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1564 > } |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1565 $ make_test_commit r1 "merge me, pt1" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1566 $ hg co -q ".^" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1567 $ make_test_commit r2 "merge me, pt2" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1568 $ hg merge -qr 1 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1569 $ make_test_commit merge "evil merge" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1570 $ make_test_commit child "child of merge" |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1571 $ make_test_files wdir |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1572 $ hg fix -r 'not public()' -w |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1573 $ hg log -G -T'{rev}:{shortest(node,8)}: branch:{branch} desc:{desc}' |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1574 @ 8:c22ce900: branch:child desc:child of merge |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1575 | |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1576 o 7:5a30615a: branch:merge desc:evil merge |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1577 |\ |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1578 | o 6:4e5acdc4: branch:r2 desc:merge me, pt2 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1579 | | |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1580 o | 5:eea01878: branch:r1 desc:merge me, pt1 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1581 |/ |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1582 o 0:0c548d87: branch:r0 desc:r0 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1583 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1584 $ hg files -r tip |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1585 mod_in_child.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1586 mod_in_child.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1587 mod_in_child.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1588 mod_in_child_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1589 mod_in_merge.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1590 mod_in_merge.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1591 mod_in_merge.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1592 mod_in_merge_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1593 mod_in_mod_in_child_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1594 mod_in_mod_in_merge_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1595 mod_in_mod_in_r1_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1596 mod_in_mod_in_r2_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1597 mod_in_r0_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1598 mod_in_r1.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1599 mod_in_r1.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1600 mod_in_r1.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1601 mod_in_r1_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1602 mod_in_r2.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1603 mod_in_r2.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1604 mod_in_r2.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1605 mod_in_r2_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1606 new_in_child.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1607 new_in_child.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1608 new_in_child.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1609 new_in_child_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1610 new_in_merge.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1611 new_in_merge.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1612 new_in_merge.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1613 new_in_merge_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1614 new_in_r1.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1615 new_in_r1.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1616 new_in_r1.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1617 new_in_r1_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1618 new_in_r2.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1619 new_in_r2.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1620 new_in_r2.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1621 new_in_r2_already_good.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1622 r0.changed |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1623 r0.ignored |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1624 r0.whole |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1625 $ for f in "$(hg files -r tip)"; do hg cat -r tip $f -T'{path}:\n{data}\n'; done |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1626 mod_in_child.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1627 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1628 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1629 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1630 mod_in_child.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1631 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1632 world |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1633 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1634 mod_in_child.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1635 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1636 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1637 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1638 mod_in_child_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1639 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1640 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1641 mod_in_merge.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1642 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1643 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1644 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1645 mod_in_merge.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1646 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1647 world |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1648 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1649 mod_in_merge.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1650 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1651 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1652 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1653 mod_in_merge_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1654 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1655 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1656 mod_in_mod_in_child_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1657 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1658 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1659 mod_in_mod_in_merge_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1660 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1661 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1662 mod_in_mod_in_r1_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1663 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1664 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1665 mod_in_mod_in_r2_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1666 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1667 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1668 mod_in_r0_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1669 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1670 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1671 mod_in_r1.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1672 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1673 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1674 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1675 mod_in_r1.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1676 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1677 world |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1678 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1679 mod_in_r1.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1680 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1681 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1682 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1683 mod_in_r1_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1684 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1685 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1686 mod_in_r2.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1687 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1688 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1689 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1690 mod_in_r2.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1691 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1692 world |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1693 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1694 mod_in_r2.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1695 HELLO |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1696 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1697 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1698 mod_in_r2_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1699 WORLD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1700 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1701 new_in_child.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1702 NEW IN CHILD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1703 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1704 new_in_child.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1705 new in child |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1706 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1707 new_in_child.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1708 NEW IN CHILD |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1709 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1710 new_in_child_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1711 ALREADY GOOD, NEW IN THIS REV |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1712 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1713 new_in_merge.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1714 NEW IN MERGE |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1715 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1716 new_in_merge.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1717 new in merge |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1718 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1719 new_in_merge.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1720 NEW IN MERGE |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1721 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1722 new_in_merge_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1723 ALREADY GOOD, NEW IN THIS REV |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1724 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1725 new_in_r1.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1726 NEW IN R1 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1727 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1728 new_in_r1.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1729 new in r1 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1730 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1731 new_in_r1.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1732 NEW IN R1 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1733 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1734 new_in_r1_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1735 ALREADY GOOD, NEW IN THIS REV |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1736 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1737 new_in_r2.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1738 NEW IN R2 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1739 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1740 new_in_r2.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1741 new in r2 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1742 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1743 new_in_r2.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1744 NEW IN R2 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1745 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1746 new_in_r2_already_good.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1747 ALREADY GOOD, NEW IN THIS REV |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1748 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1749 r0.changed: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1750 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1751 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1752 r0.ignored: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1753 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1754 |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1755 r0.whole: |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1756 hello |
eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Kyle Lippincott <spectral@google.com>
parents:
43948
diff
changeset
|
1757 |
48177
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1758 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1759 We should execute the fixer tools as few times as possible, because they might |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1760 be slow or expensive to execute. The inputs to each execution are effectively |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1761 the file path, file content, and line ranges. So, we should be able to re-use |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1762 results whenever those inputs are repeated. That saves a lot of work when |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1763 fixing chains of commits that all have the same file revision for a path being |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1764 fixed. |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1765 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1766 $ hg init numberofinvocations |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1767 $ cd numberofinvocations |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1768 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1769 $ printf "bar1" > bar.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1770 $ printf "baz1" > baz.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1771 $ printf "foo1" > foo.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1772 $ printf "qux1" > qux.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1773 $ hg commit -Aqm "commit1" |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1774 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1775 $ printf "bar2" > bar.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1776 $ printf "baz2" > baz.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1777 $ printf "foo2" > foo.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1778 $ hg commit -Aqm "commit2" |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1779 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1780 $ printf "bar3" > bar.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1781 $ printf "baz3" > baz.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1782 $ hg commit -Aqm "commit3" |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1783 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1784 $ printf "bar4" > bar.log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1785 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1786 $ LOGFILE=$TESTTMP/log |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1787 $ LOGGER=$TESTTMP/log.py |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1788 $ cat >> $LOGGER <<EOF |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1789 > # Appends the input file's name to the log file. |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1790 > import sys |
48293
7a4d187479b6
windows: use raw string in test log paths
Raphaël Gomès <rgomes@octobus.net>
parents:
48178
diff
changeset
|
1791 > with open(r'$LOGFILE', 'a') as f: |
48177
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1792 > f.write(sys.argv[1] + '\n') |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1793 > sys.stdout.write(sys.stdin.read()) |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1794 > EOF |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1795 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1796 $ hg fix --working-dir -r "all()" \ |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1797 > --config "fix.log:command=\"$PYTHON\" \"$LOGGER\" {rootpath}" \ |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1798 > --config "fix.log:pattern=glob:**.log" |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1799 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1800 $ cat $LOGFILE | sort | uniq -c |
48346
e6aecc37bfbf
tests: fix test-fix on NetBSD
Thomas Klausner <wiz@gatalith.at>
parents:
48293
diff
changeset
|
1801 \s*4 bar.log (re) |
e6aecc37bfbf
tests: fix test-fix on NetBSD
Thomas Klausner <wiz@gatalith.at>
parents:
48293
diff
changeset
|
1802 \s*4 baz.log (re) |
e6aecc37bfbf
tests: fix test-fix on NetBSD
Thomas Klausner <wiz@gatalith.at>
parents:
48293
diff
changeset
|
1803 \s*3 foo.log (re) |
e6aecc37bfbf
tests: fix test-fix on NetBSD
Thomas Klausner <wiz@gatalith.at>
parents:
48293
diff
changeset
|
1804 \s*2 qux.log (re) |
48177
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1805 |
066cdec8f74f
fix: add test to demonstrate how many times tools are executed
Danny Hooper <hooper@google.com>
parents:
47886
diff
changeset
|
1806 $ cd .. |
48178
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1807 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1808 For tools that support line ranges, it's wrong to blindly re-use fixed file |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1809 content for the same file revision if it appears twice with different baserevs, |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1810 because the line ranges could be different. Since computing line ranges is |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1811 ambiguous, this isn't a matter of correctness, but it affects the usability of |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1812 this extension. It could maybe be simpler if baserevs were computed on a |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1813 per-file basis to make this situation impossible to construct. |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1814 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1815 In the following example, we construct two subgraphs with the same file |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1816 revisions, and fix different sub-subgraphs to get different baserevs and |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1817 different changed line ranges. The key precondition is that revisions 1 and 4 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1818 have the same file revision, and the key result is that their successors don't |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1819 have the same file content, because we want to fix different areas of that same |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1820 file revision's content. |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1821 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1822 $ hg init differentlineranges |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1823 $ cd differentlineranges |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1824 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1825 $ printf "a\nb\n" > file.changed |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1826 $ hg commit -Aqm "0 ab" |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1827 $ printf "a\nx\n" > file.changed |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1828 $ hg commit -Aqm "1 ax" |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1829 $ hg remove file.changed |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1830 $ hg commit -Aqm "2 removed" |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1831 $ hg revert file.changed -r 0 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1832 $ hg commit -Aqm "3 ab (reverted)" |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1833 $ hg revert file.changed -r 1 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1834 $ hg commit -Aqm "4 ax (reverted)" |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1835 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1836 $ hg manifest --debug --template "{hash}\n" -r 0; \ |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1837 > hg manifest --debug --template "{hash}\n" -r 3 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1838 418f692145676128d2fb518b027ddbac624be76e |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1839 418f692145676128d2fb518b027ddbac624be76e |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1840 $ hg manifest --debug --template "{hash}\n" -r 1; \ |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1841 > hg manifest --debug --template "{hash}\n" -r 4 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1842 09b8b3ce5a507caaa282f7262679e6d04091426c |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1843 09b8b3ce5a507caaa282f7262679e6d04091426c |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1844 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1845 $ hg fix --working-dir -r 1+3+4 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1846 3 new orphan changesets |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1847 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1848 $ hg cat file.changed -r "successors(1)" --hidden |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1849 a |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1850 X |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1851 $ hg cat file.changed -r "successors(4)" --hidden |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1852 A |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1853 X |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1854 |
f12a19d03d2c
fix: reduce number of tool executions
Danny Hooper <hooper@google.com>
parents:
48177
diff
changeset
|
1855 $ cd .. |