Mercurial > hg
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() |