##// END OF EJS Templates
bookmarks: change bookmark within a transaction...
Pierre-Yves David -
r25744:e78a80f8 default
parent child Browse files
Show More
@@ -21,7 +21,7 import minirst, revset, fileset
21 21 import dagparser, context, simplemerge, graphmod, copies
22 22 import random
23 23 import setdiscovery, treediscovery, dagutil, pvec, localrepo
24 import phases, obsolete, exchange, bundle2, repair
24 import phases, obsolete, exchange, bundle2, repair, lock as lockmod
25 25 import ui as uimod
26 26
27 27 table = {}
@@ -976,11 +976,14 def bookmark(ui, repo, *names, **opts):
976 976 raise util.Abort(_("bookmark name required"))
977 977
978 978 if delete or rename or names or inactive:
979 wlock = repo.wlock()
979 wlock = lock = tr = None
980 980 try:
981 wlock = repo.wlock()
982 lock = repo.lock()
981 983 cur = repo.changectx('.').node()
982 984 marks = repo._bookmarks
983 985 if delete:
986 tr = repo.transaction('bookmark')
984 987 for mark in names:
985 988 if mark not in marks:
986 989 raise util.Abort(_("bookmark '%s' does not exist") %
@@ -988,9 +991,9 def bookmark(ui, repo, *names, **opts):
988 991 if mark == repo._activebookmark:
989 992 bookmarks.deactivate(repo)
990 993 del marks[mark]
991 marks.write()
992 994
993 995 elif rename:
996 tr = repo.transaction('bookmark')
994 997 if not names:
995 998 raise util.Abort(_("new bookmark name required"))
996 999 elif len(names) > 1:
@@ -1003,9 +1006,8 def bookmark(ui, repo, *names, **opts):
1003 1006 if repo._activebookmark == rename and not inactive:
1004 1007 bookmarks.activate(repo, mark)
1005 1008 del marks[rename]
1006 marks.write()
1007
1008 1009 elif names:
1010 tr = repo.transaction('bookmark')
1009 1011 newact = None
1010 1012 for mark in names:
1011 1013 mark = checkformat(mark)
@@ -1023,8 +1025,6 def bookmark(ui, repo, *names, **opts):
1023 1025 bookmarks.activate(repo, newact)
1024 1026 elif cur != tgt and newact == repo._activebookmark:
1025 1027 bookmarks.deactivate(repo)
1026 marks.write()
1027
1028 1028 elif inactive:
1029 1029 if len(marks) == 0:
1030 1030 ui.status(_("no bookmarks set\n"))
@@ -1032,8 +1032,11 def bookmark(ui, repo, *names, **opts):
1032 1032 ui.status(_("no active bookmark\n"))
1033 1033 else:
1034 1034 bookmarks.deactivate(repo)
1035 if tr is not None:
1036 marks.recordchange(tr)
1037 tr.close()
1035 1038 finally:
1036 wlock.release()
1039 lockmod.release(tr, lock, wlock)
1037 1040 else: # show bookmarks
1038 1041 fm = ui.formatter('bookmarks', opts)
1039 1042 hexfn = fm.hexfunc
@@ -63,55 +63,3 list bookmarks
63 63 $ hg book
64 64 test 0:5c9ad3787638
65 65 test2 0:5c9ad3787638
66
67 immediate rollback and reentrancy issue
68
69 $ echo "mq=!" >> $HGRCPATH
70 $ hg init repo
71 $ cd repo
72 $ echo a > a
73 $ hg ci -Am adda
74 adding a
75 $ echo b > b
76 $ hg ci -Am addb
77 adding b
78 $ hg bookmarks markb
79 $ hg rollback
80 repository tip rolled back to revision 0 (undo commit)
81 working directory now based on revision 0
82
83 are you there?
84
85 $ hg bookmarks
86 no bookmarks set
87
88 can we commit? (issue2692)
89
90 $ echo c > c
91 $ hg ci -Am rockon
92 adding c
93
94 can you be added again?
95
96 $ hg bookmarks markb
97 $ hg bookmarks
98 * markb 1:fdb34407462c
99
100 rollback dry run with rollback information
101
102 $ hg rollback -n
103 repository tip rolled back to revision 0 (undo commit)
104 $ hg bookmarks
105 * markb 1:fdb34407462c
106
107 rollback dry run with rollback information and no commit undo
108
109 $ rm .hg/store/undo
110 $ hg rollback -n
111 no rollback information available
112 [1]
113 $ hg bookmarks
114 * markb 1:fdb34407462c
115
116 $ cd ..
117
@@ -403,10 +403,15 test id
403 403 test rollback
404 404
405 405 $ echo foo > f1
406 $ hg bookmark tmp-rollback
406 407 $ hg ci -Amr
407 408 adding f1
408 $ hg bookmark -f Y -r 1
409 $ hg bookmark -f Z -r 1
409 $ hg bookmarks
410 X2 1:925d80f479bb
411 Y 2:db815d6d32e6
412 Z 2:db815d6d32e6
413 * tmp-rollback 3:2bf5cfec5864
414 x y 2:db815d6d32e6
410 415 $ hg rollback
411 416 repository tip rolled back to revision 2 (undo commit)
412 417 working directory now based on revision 2
@@ -414,7 +419,18 test rollback
414 419 X2 1:925d80f479bb
415 420 Y 2:db815d6d32e6
416 421 Z 2:db815d6d32e6
422 * tmp-rollback 2:db815d6d32e6
417 423 x y 2:db815d6d32e6
424 $ hg bookmark -f Z -r 1
425 $ hg rollback
426 repository tip rolled back to revision 2 (undo bookmark)
427 $ hg bookmarks
428 X2 1:925d80f479bb
429 Y 2:db815d6d32e6
430 Z 2:db815d6d32e6
431 * tmp-rollback 2:db815d6d32e6
432 x y 2:db815d6d32e6
433 $ hg bookmark -d tmp-rollback
418 434
419 435 activate bookmark on working dir parent without --force
420 436
@@ -173,36 +173,66 pull empty
173 173 add extra data to test their exchange during push
174 174
175 175 $ hg -R main bookmark --rev eea13746799a book_eea1
176 pre-close-tip:02de42196ebe draft
177 postclose-tip:02de42196ebe draft
178 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
176 179 $ hg -R main debugobsolete -d '0 0' 3333333333333333333333333333333333333333 `getmainid eea13746799a`
177 180 pre-close-tip:02de42196ebe draft
178 181 postclose-tip:02de42196ebe draft
179 182 txnclose hook: HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:* HG_TXNNAME=debugobsolete (glob)
180 183 $ hg -R main bookmark --rev 02de42196ebe book_02de
184 pre-close-tip:02de42196ebe draft book_02de
185 postclose-tip:02de42196ebe draft book_02de
186 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
181 187 $ hg -R main debugobsolete -d '0 0' 4444444444444444444444444444444444444444 `getmainid 02de42196ebe`
182 188 pre-close-tip:02de42196ebe draft book_02de
183 189 postclose-tip:02de42196ebe draft book_02de
184 190 txnclose hook: HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:* HG_TXNNAME=debugobsolete (glob)
185 191 $ hg -R main bookmark --rev 42ccdea3bb16 book_42cc
192 pre-close-tip:02de42196ebe draft book_02de
193 postclose-tip:02de42196ebe draft book_02de
194 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
186 195 $ hg -R main debugobsolete -d '0 0' 5555555555555555555555555555555555555555 `getmainid 42ccdea3bb16`
187 196 pre-close-tip:02de42196ebe draft book_02de
188 197 postclose-tip:02de42196ebe draft book_02de
189 198 txnclose hook: HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:* HG_TXNNAME=debugobsolete (glob)
190 199 $ hg -R main bookmark --rev 5fddd98957c8 book_5fdd
200 pre-close-tip:02de42196ebe draft book_02de
201 postclose-tip:02de42196ebe draft book_02de
202 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
191 203 $ hg -R main debugobsolete -d '0 0' 6666666666666666666666666666666666666666 `getmainid 5fddd98957c8`
192 204 pre-close-tip:02de42196ebe draft book_02de
193 205 postclose-tip:02de42196ebe draft book_02de
194 206 txnclose hook: HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:* HG_TXNNAME=debugobsolete (glob)
195 207 $ hg -R main bookmark --rev 32af7686d403 book_32af
208 pre-close-tip:02de42196ebe draft book_02de
209 postclose-tip:02de42196ebe draft book_02de
210 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
196 211 $ hg -R main debugobsolete -d '0 0' 7777777777777777777777777777777777777777 `getmainid 32af7686d403`
197 212 pre-close-tip:02de42196ebe draft book_02de
198 213 postclose-tip:02de42196ebe draft book_02de
199 214 txnclose hook: HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:* HG_TXNNAME=debugobsolete (glob)
200 215
201 216 $ hg -R other bookmark --rev cd010b8cd998 book_eea1
217 pre-close-tip:24b6387c8c8c public
218 postclose-tip:24b6387c8c8c public
219 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
202 220 $ hg -R other bookmark --rev cd010b8cd998 book_02de
221 pre-close-tip:24b6387c8c8c public
222 postclose-tip:24b6387c8c8c public
223 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
203 224 $ hg -R other bookmark --rev cd010b8cd998 book_42cc
225 pre-close-tip:24b6387c8c8c public
226 postclose-tip:24b6387c8c8c public
227 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
204 228 $ hg -R other bookmark --rev cd010b8cd998 book_5fdd
229 pre-close-tip:24b6387c8c8c public
230 postclose-tip:24b6387c8c8c public
231 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
205 232 $ hg -R other bookmark --rev cd010b8cd998 book_32af
233 pre-close-tip:24b6387c8c8c public
234 postclose-tip:24b6387c8c8c public
235 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
206 236
207 237 $ hg -R main phase --public eea13746799a
208 238 pre-close-tip:02de42196ebe draft book_02de
@@ -247,6 +247,9 listkeys hook
247 247
248 248 $ echo "listkeys = printenv.py listkeys" >> .hg/hgrc
249 249 $ hg bookmark -r null bar
250 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
251 pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
252 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
250 253 $ cd ../b
251 254 $ hg pull -B bar ../a
252 255 pulling from ../a
@@ -279,6 +282,9 test that prelistkeys can prevent listin
279 282
280 283 $ echo "prelistkeys = printenv.py prelistkeys.forbid 1" >> .hg/hgrc
281 284 $ hg bookmark -r null quux
285 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
286 pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
287 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
282 288 $ cd ../b
283 289 $ hg pull -B quux ../a
284 290 pulling from ../a
@@ -74,16 +74,16 working dir unaffected by rollback: do n
74 74 $ hg bookmark foo
75 75 $ hg commit -m'modify a again'
76 76 $ echo b > b
77 $ hg bookmark bar -r default #making bar active, before the transaction
77 78 $ hg commit -Am'add b'
78 79 adding b
79 80 $ hg log --template '{rev} {branch} {desc|firstline}\n'
80 81 2 test add b
81 82 1 test modify a again
82 83 0 default add a again
83 $ hg update default
84 $ hg update bar
84 85 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
85 (leaving bookmark foo)
86 $ hg bookmark bar
86 (activating bookmark bar)
87 87 $ cat .hg/undo.branch ; echo
88 88 test
89 89 $ hg rollback -f
@@ -94,7 +94,7 working dir unaffected by rollback: do n
94 94 default
95 95 $ cat .hg/bookmarks.current ; echo
96 96 bar
97 $ hg bookmark --delete foo
97 $ hg bookmark --delete foo bar
98 98
99 99 rollback by pretxncommit saves commit message (issue1635)
100 100
General Comments 0
You need to be logged in to leave comments. Login now