mercurial/bookmarks.py
changeset 13353 689bf32b3bbd
parent 13352 f9cd37fca5ba
child 13354 4e1ba6ead69c
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()