comparison tests/test-backout.t @ 12727:52971985be14

backout: provide linear backout as a default (without --merge option) This changes backouts changeset to retain linear history, .e. it is committed as a child of the working directory parent, not the reverted changeset parent. The default behavior was previously to just commit a reverted change as a child of the backed out changeset - thus creating a new head. Most of the time, you would use the --merge option, as it does not make sense to keep this dangling head as is. The previous behavior could be obtained by using 'hg update --clean .' after a 'hg backout --merge'. The --merge option itself is not affected by this change. There is also still an autocommit of the backout if a merge is not needed, i.e. in case the backout is the parent of the working directory. Previously we had (pwd = parent of the working directory): pwd older backout auto merge backout --merge auto commit With the new linear approach: pwd older backout auto commit backout --merge auto commit auto: commit done by the backout command merge: backout also already committed but explicit merge and commit needed commit: user need to commit the update/merge
author Gilles Moris <gilles.moris@free.fr>
date Fri, 10 Sep 2010 10:28:18 +0200
parents b63f6422d2a7
children a68ccfd9c7be
comparison
equal deleted inserted replaced
12726:61c0df2b089a 12727:52971985be14
37 adding a 37 adding a
38 38
39 $ hg rm a 39 $ hg rm a
40 $ hg commit -d '1 0' -m b 40 $ hg commit -d '1 0' -m b
41 41
42 $ hg backout -d '2 0' --merge tip 42 $ hg backout -d '2 0' tip
43 adding a 43 adding a
44 changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372 44 changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372
45 $ cat a 45 $ cat a
46 content 46 content
47 47
129 $ echo 2 >> a 129 $ echo 2 >> a
130 $ hg commit -d '1 0' -m b 130 $ hg commit -d '1 0' -m b
131 $ echo 1 > b 131 $ echo 1 > b
132 $ hg commit -d '2 0' -A -m c 132 $ hg commit -d '2 0' -A -m c
133 adding b 133 adding b
134
135 without --merge
134 $ hg backout -d '3 0' 1 136 $ hg backout -d '3 0' 1
135 reverting a 137 reverting a
138 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
139 $ hg locate b
140 b
141 $ hg update -C tip
142 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
143 $ hg locate b
144 b
145
146 with --merge
147 $ hg backout --merge -d '3 0' 1
148 reverting a
136 created new head 149 created new head
137 changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5 150 changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5
138 the backout changeset is a new head - do not forget to merge 151 merging with changeset 3:3202beb76721
139 (use "backout --merge" if you want to auto-merge) 152 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
153 (branch merge, don't forget to commit)
140 $ hg locate b 154 $ hg locate b
141 b 155 b
142 $ hg update -C tip 156 $ hg update -C tip
143 1 files updated, 0 files merged, 1 files removed, 0 files unresolved 157 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
144 $ hg locate b 158 $ hg locate b
218 $ hg branch branch2 232 $ hg branch branch2
219 marked working directory as branch branch2 233 marked working directory as branch branch2
220 $ echo branch2 > file2 234 $ echo branch2 > file2
221 $ hg ci -d '2 0' -Am file2 235 $ hg ci -d '2 0' -Am file2
222 adding file2 236 adding file2
223 $ hg backout -d '3 0' -r 1 -m 'backout on branch1' 237
238 without --merge
239 $ hg backout -r 1
224 removing file1 240 removing file1
241 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
242 $ hg branch
243 branch2
244 $ hg status -A
245 R file1
246 C default
247 C file2
248
249 with --merge
250 $ hg update -qC
251 $ hg backout --merge -d '3 0' -r 1 -m 'backout on branch1'
252 removing file1
225 created new head 253 created new head
226 changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3 254 changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3
227 the backout changeset is a new head - do not forget to merge 255 merging with changeset 3:d4e8f6db59fb
228 (use "backout --merge" if you want to auto-merge) 256 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
229 257 (branch merge, don't forget to commit)
230 XXX maybe backout shouldn't suggest a merge here as it is a different branch? 258 $ hg update -q -C 2
231 259
232 on branch2 with branch1 not merged, so file1 should still exist: 260 on branch2 with branch1 not merged, so file1 should still exist:
233 261
234 $ hg id 262 $ hg id
235 45bbcd363bf0 (branch2) 263 45bbcd363bf0 (branch2)