##// END OF EJS Templates
merge with stable
Matt Mackall -
r17059:fba17a64 merge default
parent child Browse files
Show More
@@ -2925,6 +2925,10 b' def strip(ui, repo, *revs, **opts):'
2925 Use the --no-backup option to discard the backup bundle once the
2925 Use the --no-backup option to discard the backup bundle once the
2926 operation completes.
2926 operation completes.
2927
2927
2928 Strip is not a history-rewriting operation and can be used on
2929 changesets in the public phase. But if the stripped changesets have
2930 been pushed to a remote repository you will likely pull them again.
2931
2928 Return 0 on success.
2932 Return 0 on success.
2929 """
2933 """
2930 backup = 'all'
2934 backup = 'all'
@@ -238,6 +238,9 b' def rebase(ui, repo, **opts):'
238
238
239 # Keep track of the current bookmarks in order to reset them later
239 # Keep track of the current bookmarks in order to reset them later
240 currentbookmarks = repo._bookmarks.copy()
240 currentbookmarks = repo._bookmarks.copy()
241 activebookmark = repo._bookmarkcurrent
242 if activebookmark:
243 bookmarks.unsetcurrent(repo)
241
244
242 sortedstate = sorted(state)
245 sortedstate = sorted(state)
243 total = len(sortedstate)
246 total = len(sortedstate)
@@ -327,6 +330,11 b' def rebase(ui, repo, **opts):'
327 util.unlinkpath(repo.sjoin('undo'))
330 util.unlinkpath(repo.sjoin('undo'))
328 if skipped:
331 if skipped:
329 ui.note(_("%d revisions have been skipped\n") % len(skipped))
332 ui.note(_("%d revisions have been skipped\n") % len(skipped))
333
334 if (activebookmark and
335 repo['tip'].node() == repo._bookmarks[activebookmark]):
336 bookmarks.setcurrent(repo, activebookmark)
337
330 finally:
338 finally:
331 release(lock, wlock)
339 release(lock, wlock)
332
340
@@ -476,12 +484,10 b' def updatemq(repo, state, skipped, **opt'
476
484
477 def updatebookmarks(repo, nstate, originalbookmarks, **opts):
485 def updatebookmarks(repo, nstate, originalbookmarks, **opts):
478 'Move bookmarks to their correct changesets'
486 'Move bookmarks to their correct changesets'
479 current = repo._bookmarkcurrent
480 for k, v in originalbookmarks.iteritems():
487 for k, v in originalbookmarks.iteritems():
481 if v in nstate:
488 if v in nstate:
482 if nstate[v] != nullmerge:
489 if nstate[v] != nullmerge:
483 # reset the pointer if the bookmark was moved incorrectly
490 # update the bookmarks for revs that have moved
484 if k != current:
485 repo._bookmarks[k] = nstate[v]
491 repo._bookmarks[k] = nstate[v]
486
492
487 bookmarks.write(repo)
493 bookmarks.write(repo)
@@ -1301,7 +1301,11 b' def amend(ui, repo, commitfunc, old, ext'
1301 try:
1301 try:
1302 # First, do a regular commit to record all changes in the working
1302 # First, do a regular commit to record all changes in the working
1303 # directory (if there are any)
1303 # directory (if there are any)
1304 ui.callhooks = False
1305 try:
1304 node = commit(ui, repo, commitfunc, pats, opts)
1306 node = commit(ui, repo, commitfunc, pats, opts)
1307 finally:
1308 ui.callhooks = True
1305 ctx = repo[node]
1309 ctx = repo[node]
1306
1310
1307 # Participating changesets:
1311 # Participating changesets:
@@ -2752,11 +2752,6 b' def graft(ui, repo, *revs, **opts):'
2752 ctx.p1().node())
2752 ctx.p1().node())
2753 finally:
2753 finally:
2754 repo.ui.setconfig('ui', 'forcemerge', '')
2754 repo.ui.setconfig('ui', 'forcemerge', '')
2755 # drop the second merge parent
2756 repo.setparents(current.node(), nullid)
2757 repo.dirstate.write()
2758 # fix up dirstate for copies and renames
2759 cmdutil.duplicatecopies(repo, ctx.rev(), ctx.p1().rev())
2760 # report any conflicts
2755 # report any conflicts
2761 if stats and stats[3] > 0:
2756 if stats and stats[3] > 0:
2762 # write out state for --continue
2757 # write out state for --continue
@@ -2768,6 +2763,12 b' def graft(ui, repo, *revs, **opts):'
2768 else:
2763 else:
2769 cont = False
2764 cont = False
2770
2765
2766 # drop the second merge parent
2767 repo.setparents(current.node(), nullid)
2768 repo.dirstate.write()
2769 # fix up dirstate for copies and renames
2770 cmdutil.duplicatecopies(repo, ctx.rev(), ctx.p1().rev())
2771
2771 # commit
2772 # commit
2772 source = ctx.extra().get('source')
2773 source = ctx.extra().get('source')
2773 if not source:
2774 if not source:
@@ -138,6 +138,9 b' def redirect(state):'
138 _redirect = state
138 _redirect = state
139
139
140 def hook(ui, repo, name, throw=False, **args):
140 def hook(ui, repo, name, throw=False, **args):
141 if not ui.callhooks:
142 return False
143
141 r = False
144 r = False
142
145
143 oldstdout = -1
146 oldstdout = -1
@@ -19,6 +19,7 b' class ui(object):'
19 self._ucfg = config.config() # untrusted
19 self._ucfg = config.config() # untrusted
20 self._trustusers = set()
20 self._trustusers = set()
21 self._trustgroups = set()
21 self._trustgroups = set()
22 self.callhooks = True
22
23
23 if src:
24 if src:
24 self.fout = src.fout
25 self.fout = src.fout
@@ -31,6 +32,7 b' class ui(object):'
31 self._trustusers = src._trustusers.copy()
32 self._trustusers = src._trustusers.copy()
32 self._trustgroups = src._trustgroups.copy()
33 self._trustgroups = src._trustgroups.copy()
33 self.environ = src.environ
34 self.environ = src.environ
35 self.callhooks = src.callhooks
34 self.fixconfig()
36 self.fixconfig()
35 else:
37 else:
36 self.fout = sys.stdout
38 self.fout = sys.stdout
@@ -23,11 +23,17 b' Nothing to amend:'
23 nothing changed
23 nothing changed
24 [1]
24 [1]
25
25
26 $ echo '[hooks]' >> $HGRCPATH
27 $ echo 'pretxncommit.foo = echo "pretxncommit $HG_NODE"; hg id -r $HG_NODE' >> $HGRCPATH
28
26 Amending changeset with changes in working dir:
29 Amending changeset with changes in working dir:
27
30
28 $ echo a >> a
31 $ echo a >> a
29 $ hg ci --amend -m 'amend base1'
32 $ hg ci --amend -m 'amend base1'
30 saved backup bundle to $TESTTMP/.hg/strip-backup/489edb5b847d-amend-backup.hg (glob)
33 pretxncommit 9cd25b479c51be2f4ed2c38e7abdf7ce67d8e0dc
34 9cd25b479c51 tip
35 saved backup bundle to $TESTTMP/.hg/strip-backup/489edb5b847d-amend-backup.hg
36 $ echo 'pretxncommit.foo = ' >> $HGRCPATH
31 $ hg diff -c .
37 $ hg diff -c .
32 diff -r ad120869acf0 -r 9cd25b479c51 a
38 diff -r ad120869acf0 -r 9cd25b479c51 a
33 --- a/a Thu Jan 01 00:00:00 1970 +0000
39 --- a/a Thu Jan 01 00:00:00 1970 +0000
@@ -304,4 +304,57 b' Graft with --log'
304 14 1:5d205f8b35b6 3
304 14 1:5d205f8b35b6 3
305 (grafted from 4c60f11aa304a54ae1c199feb94e7fc771e51ed8)
305 (grafted from 4c60f11aa304a54ae1c199feb94e7fc771e51ed8)
306
306
307 $ cd ..
307 Resolve conflicted graft
308 $ hg up -q 0
309 $ echo b > a
310 $ hg ci -m 8
311 created new head
312 $ echo a > a
313 $ hg ci -m 9
314 $ hg graft 1 --tool internal:fail
315 grafting revision 1
316 abort: unresolved conflicts, can't continue
317 (use hg resolve and hg graft --continue)
318 [255]
319 $ hg resolve --all
320 merging a
321 $ hg graft -c
322 grafting revision 1
323 $ hg export tip --git
324 # HG changeset patch
325 # User bar
326 # Date 0 0
327 # Node ID 64ecd9071ce83c6e62f538d8ce7709d53f32ebf7
328 # Parent 4bdb9a9d0b84ffee1d30f0dfc7744cade17aa19c
329 1
330
331 diff --git a/a b/a
332 --- a/a
333 +++ b/a
334 @@ -1,1 +1,1 @@
335 -a
336 +b
337
338 Resolve conflicted graft with rename
339 $ echo c > a
340 $ hg ci -m 10
341 $ hg graft 2 --tool internal:fail
342 grafting revision 2
343 abort: unresolved conflicts, can't continue
344 (use hg resolve and hg graft --continue)
345 [255]
346 $ hg resolve --all
347 merging a and b to b
348 $ hg graft -c
349 grafting revision 2
350 $ hg export tip --git
351 # HG changeset patch
352 # User test
353 # Date 0 0
354 # Node ID 2e80e1351d6ed50302fe1e05f8bd1d4d412b6e11
355 # Parent e5a51ae854a8bbaaf25cc5c6a57ff46042dadbb4
356 2
357
358 diff --git a/a b/b
359 rename from a
360 rename to b
@@ -36,8 +36,10 b' Create a repo with several bookmarks'
36 adding d
36 adding d
37 created new head
37 created new head
38
38
39 $ hg book W
40
39 $ hg tglog
41 $ hg tglog
40 @ 3: 'D' bookmarks:
42 @ 3: 'D' bookmarks: W
41 |
43 |
42 | o 2: 'C' bookmarks: Y Z
44 | o 2: 'C' bookmarks: Y Z
43 | |
45 | |
@@ -60,7 +62,7 b' Move only rebased bookmarks'
60 $ hg tglog
62 $ hg tglog
61 @ 3: 'C' bookmarks: Y Z
63 @ 3: 'C' bookmarks: Y Z
62 |
64 |
63 o 2: 'D' bookmarks:
65 o 2: 'D' bookmarks: W
64 |
66 |
65 | o 1: 'B' bookmarks: X
67 | o 1: 'B' bookmarks: X
66 |/
68 |/
@@ -82,7 +84,28 b' Keep bookmarks to the correct rebased ch'
82 |
84 |
83 o 2: 'B' bookmarks: X
85 o 2: 'B' bookmarks: X
84 |
86 |
85 o 1: 'D' bookmarks:
87 o 1: 'D' bookmarks: W
88 |
89 o 0: 'A' bookmarks:
90
91
92 Keep active bookmark on the correct changeset
93
94 $ cd ..
95 $ hg clone -q a a3
96
97 $ cd a3
98 $ hg up -q X
99
100 $ hg rebase -d W
101 saved backup bundle to $TESTTMP/a3/.hg/strip-backup/*-backup.hg (glob)
102
103 $ hg tglog
104 @ 3: 'C' bookmarks: Y Z
105 |
106 o 2: 'B' bookmarks: X
107 |
108 o 1: 'D' bookmarks: W
86 |
109 |
87 o 0: 'A' bookmarks:
110 o 0: 'A' bookmarks:
88
111
General Comments 0
You need to be logged in to leave comments. Login now