comparison mercurial/bookmarks.py @ 13353:689bf32b3bbd

bookmarks: move pushkey functions into core
author Matt Mackall <mpm@selenic.com>
date Thu, 10 Feb 2011 13:46:27 -0600
parents f9cd37fca5ba
children 4e1ba6ead69c
comparison
equal deleted inserted replaced
13352:f9cd37fca5ba 13353:689bf32b3bbd
119 if n in parents: 119 if n in parents:
120 marks[mark] = node 120 marks[mark] = node
121 update = True 121 update = True
122 if update: 122 if update:
123 write(repo) 123 write(repo)
124
125 def listbookmarks(repo):
126 # We may try to list bookmarks on a repo type that does not
127 # support it (e.g., statichttprepository).
128 if not hasattr(repo, '_bookmarks'):
129 return {}
130
131 d = {}
132 for k, v in repo._bookmarks.iteritems():
133 d[k] = hex(v)
134 return d
135
136 def pushbookmark(repo, key, old, new):
137 w = repo.wlock()
138 try:
139 marks = repo._bookmarks
140 if hex(marks.get(key, '')) != old:
141 return False
142 if new == '':
143 del marks[key]
144 else:
145 if new not in repo:
146 return False
147 marks[key] = repo[new].node()
148 write(repo)
149 return True
150 finally:
151 w.release()