annotate tests/test-merge-local.t @ 36755:ff4bc0ab6740 stable

wireproto: check permissions when executing "batch" command (BC) (SEC) For as long as the "batch" command has existed (introduced by bd88561afb4b and first released as part of Mercurial 1.9), that command (like most wire commands introduced after 2008) lacked an entry in the hgweb permissions table. And since we don't verify permissions if an entry is missing from the permissions table, this meant that executing a command via "batch" would bypass all permissions checks. The security implications are significant: a Mercurial HTTP server would allow writes via "batch" wire protocol commands as long as the HTTP request were processed by Mercurial and the process running the Mercurial HTTP server had write access to the repository. The Mercurial defaults of servers being read-only and the various web.* config options to define access control were bypassed. In addition, "batch" could be used to exfiltrate data from servers that were configured to not allow read access. Both forms of permissions bypass could be mitigated to some extent by using HTTP authentication. This would prevent HTTP requests from hitting Mercurial's server logic. However, any authenticated request would still be able to bypass permissions checks via "batch" commands. The easiest exploit was to send "pushkey" commands via "batch" and modify the state of bookmarks, phases, and obsolescence markers. However, I suspect a well-crafted HTTP request could trick the server into running the "unbundle" wire protocol command, effectively performing a full `hg push` to create new changesets on the remote. This commit plugs this gaping security hole by having the "batch" command perform permissions checking on each sub-command that is being batched. We do this by threading a permissions checking callable all the way to the protocol handler. The threading is a bit hacky from a code perspective. But it preserves API compatibility, which is the proper thing to do on the stable branch. One of the subtle things we do is assume that a command with an undefined permission is a "push" command. This is the safest thing to do from a security perspective: we don't want to take chances that a command could perform a write even though the server is configured to not allow writes. As the test changes demonstrate, it is no longer possible to bypass permissions via the "batch" wire protocol command. .. bc:: The "batch" wire protocol command now enforces permissions of each invoked sub-command. Wire protocol commands must define their operation type or the "batch" command will assume they can write data and will prevent their execution on HTTP servers unless the HTTP request method is POST, the server is configured to allow pushes, and the (possibly authenticated) HTTP user is authorized to perform a push.
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 20 Feb 2018 18:55:58 -0800
parents 9e4f82bc2b0b
children 55c6ebd11cb9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
1 $ hg init
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
2
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
3 Revision 0:
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
4
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
5 $ echo "unchanged" > unchanged
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
6 $ echo "remove me" > remove
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
7 $ echo "copy me" > copy
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
8 $ echo "move me" > move
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
9 $ for i in 1 2 3 4 5 6 7 8 9; do
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
10 > echo "merge ok $i" >> zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
11 > done
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
12 $ echo "merge bad" > zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
13 $ hg ci -Am "revision 0"
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
14 adding copy
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
15 adding move
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
16 adding remove
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
17 adding unchanged
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
18 adding zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
19 adding zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
20
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
21 Revision 1:
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
22
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
23 $ hg rm remove
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
24 $ hg mv move moved
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
25 $ hg cp copy copied
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
26 $ echo "added" > added
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
27 $ hg add added
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
28 $ echo "new first line" > zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
29 $ hg cat zzz1_merge_ok >> zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
30 $ echo "new last line" >> zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
31 $ hg ci -m "revision 1"
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
32
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
33 Local changes to revision 0:
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
34
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
35 $ hg co 0
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
36 4 files updated, 0 files merged, 3 files removed, 0 files unresolved
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
37 $ echo "new last line" >> zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
38 $ echo "another last line" >> zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
39
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
40 $ hg diff --nodates | grep "^[+-][^<>]"
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
41 --- a/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
42 +++ b/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
43 +new last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
44 --- a/zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
45 +++ b/zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
46 +another last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
47
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
48 $ hg st
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
49 M zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
50 M zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
51
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
52 Local merge with bad merge tool:
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
53
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
54 $ HGMERGE=false hg co
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
55 merging zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
56 merging zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
57 merging zzz2_merge_bad failed!
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
58 3 files updated, 1 files merged, 2 files removed, 1 files unresolved
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
59 use 'hg resolve' to retry unresolved file merges
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12258
diff changeset
60 [1]
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
61
27316
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
62 $ hg resolve -m
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
63 (no more unresolved files)
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
64
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
65 $ hg co 0
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
66 merging zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
67 merging zzz2_merge_bad
26614
ef1eb6df7071 simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents: 15501
diff changeset
68 warning: conflicts while merging zzz2_merge_bad! (edit, then use 'hg resolve --mark')
30229
69ffbbe73dd0 merge: avoid superfluous filemerges when grafting through renames (issue5407)
Gábor Stefanik <gabor.stefanik@nng.com>
parents: 30200
diff changeset
69 2 files updated, 1 files merged, 3 files removed, 1 files unresolved
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
70 use 'hg resolve' to retry unresolved file merges
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12258
diff changeset
71 [1]
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
72
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
73 $ hg diff --nodates | grep "^[+-][^<>]"
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
74 --- a/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
75 +++ b/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
76 +new last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
77 --- a/zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
78 +++ b/zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
79 +another last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
80 +=======
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
81
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
82 $ hg st
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
83 M zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
84 M zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
85 ? zzz2_merge_bad.orig
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
86
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
87 Local merge with conflicts:
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
88
27316
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
89 $ hg resolve -m
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
90 (no more unresolved files)
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
91
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
92 $ hg co
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
93 merging zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
94 merging zzz2_merge_bad
26614
ef1eb6df7071 simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents: 15501
diff changeset
95 warning: conflicts while merging zzz2_merge_bad! (edit, then use 'hg resolve --mark')
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
96 3 files updated, 1 files merged, 2 files removed, 1 files unresolved
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
97 use 'hg resolve' to retry unresolved file merges
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12258
diff changeset
98 [1]
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
99
27316
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
100 $ hg resolve -m
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
101 (no more unresolved files)
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
102
26941
454deda24315 filemerge: choose where .orig files are kept
Christian Delahousse <cdelahousse@fb.com>
parents: 26614
diff changeset
103 $ hg co 0 --config 'ui.origbackuppath=.hg/origbackups'
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
104 merging zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
105 merging zzz2_merge_bad
26614
ef1eb6df7071 simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents: 15501
diff changeset
106 warning: conflicts while merging zzz2_merge_bad! (edit, then use 'hg resolve --mark')
30229
69ffbbe73dd0 merge: avoid superfluous filemerges when grafting through renames (issue5407)
Gábor Stefanik <gabor.stefanik@nng.com>
parents: 30200
diff changeset
107 2 files updated, 1 files merged, 3 files removed, 1 files unresolved
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
108 use 'hg resolve' to retry unresolved file merges
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12258
diff changeset
109 [1]
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
110
26941
454deda24315 filemerge: choose where .orig files are kept
Christian Delahousse <cdelahousse@fb.com>
parents: 26614
diff changeset
111 Are orig files from the last commit where we want them?
454deda24315 filemerge: choose where .orig files are kept
Christian Delahousse <cdelahousse@fb.com>
parents: 26614
diff changeset
112 $ ls .hg/origbackups
34146
9e4f82bc2b0b scmutil: don't append .orig to backups in origbackuppath (BC)
Mark Thomas <mbthomas@fb.com>
parents: 30229
diff changeset
113 zzz2_merge_bad
26941
454deda24315 filemerge: choose where .orig files are kept
Christian Delahousse <cdelahousse@fb.com>
parents: 26614
diff changeset
114
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
115 $ hg diff --nodates | grep "^[+-][^<>]"
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
116 --- a/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
117 +++ b/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
118 +new last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
119 --- a/zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
120 +++ b/zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
121 +another last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
122 +=======
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
123 +=======
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
124 +new last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
125 +=======
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
126
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
127 $ hg st
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
128 M zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
129 M zzz2_merge_bad
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
130 ? zzz2_merge_bad.orig
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
131
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
132 Local merge without conflicts:
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
133
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
134 $ hg revert zzz2_merge_bad
3869
ad6f34c83c3d Add instructions how to redo/finish failed merge with local working directory.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
135
27316
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
136 $ hg resolve -m
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
137 (no more unresolved files)
777f668eca70 merge: refuse update/merge if there are unresolved conflicts (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 26941
diff changeset
138
12258
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
139 $ hg co
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
140 merging zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
141 4 files updated, 1 files merged, 2 files removed, 0 files unresolved
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
142
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
143 $ hg diff --nodates | grep "^[+-][^<>]"
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
144 --- a/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
145 +++ b/zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
146 +new last line
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
147
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
148 $ hg st
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
149 M zzz1_merge_ok
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
150 ? zzz2_merge_bad.orig
98ec977aa61e tests: unify test-merge-local
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
151