mercurial/exchange.py
changeset 42820 10841b9a80c3
parent 42813 268662aac075
parent 42811 3332bde53714
child 42914 08fce968d00b
equal deleted inserted replaced
42819:6a551a2dc666 42820:10841b9a80c3
  1034         return 'export'
  1034         return 'export'
  1035     elif not new:
  1035     elif not new:
  1036         return 'delete'
  1036         return 'delete'
  1037     return 'update'
  1037     return 'update'
  1038 
  1038 
       
  1039 def _abortonsecretctx(pushop, node, b):
       
  1040     """abort if a given bookmark points to a secret changeset"""
       
  1041     if node and pushop.repo[node].phase() == phases.secret:
       
  1042         raise error.Abort(_('cannot push bookmark %s as it points to a secret'
       
  1043                             ' changeset') % b)
       
  1044 
  1039 def _pushb2bookmarkspart(pushop, bundler):
  1045 def _pushb2bookmarkspart(pushop, bundler):
  1040     pushop.stepsdone.add('bookmarks')
  1046     pushop.stepsdone.add('bookmarks')
  1041     if not pushop.outbookmarks:
  1047     if not pushop.outbookmarks:
  1042         return
  1048         return
  1043 
  1049 
  1044     allactions = []
  1050     allactions = []
  1045     data = []
  1051     data = []
  1046     for book, old, new in pushop.outbookmarks:
  1052     for book, old, new in pushop.outbookmarks:
       
  1053         _abortonsecretctx(pushop, new, book)
  1047         new = bin(new)
  1054         new = bin(new)
  1048         data.append((book, new))
  1055         data.append((book, new))
  1049         allactions.append((book, _bmaction(old, new)))
  1056         allactions.append((book, _bmaction(old, new)))
  1050     checkdata = bookmod.binaryencode(data)
  1057     checkdata = bookmod.binaryencode(data)
  1051     bundler.newpart('bookmarks', data=checkdata)
  1058     bundler.newpart('bookmarks', data=checkdata)
  1070                 raise error.Abort(bookmsgmap[action][1].rstrip() % book)
  1077                 raise error.Abort(bookmsgmap[action][1].rstrip() % book)
  1071         # we should not be called for part we did not generated
  1078         # we should not be called for part we did not generated
  1072         assert False
  1079         assert False
  1073 
  1080 
  1074     for book, old, new in pushop.outbookmarks:
  1081     for book, old, new in pushop.outbookmarks:
       
  1082         _abortonsecretctx(pushop, new, book)
  1075         part = bundler.newpart('pushkey')
  1083         part = bundler.newpart('pushkey')
  1076         part.addparam('namespace', enc('bookmarks'))
  1084         part.addparam('namespace', enc('bookmarks'))
  1077         part.addparam('key', enc(book))
  1085         part.addparam('key', enc(book))
  1078         part.addparam('old', enc(old))
  1086         part.addparam('old', enc(old))
  1079         part.addparam('new', enc(new))
  1087         part.addparam('new', enc(new))