mercurial/bookmarks.py
branchstable
changeset 19110 741d94aa92e4
parent 18984 efef056b1ae9
child 19523 f37b5a17e6a0
equal deleted inserted replaced
19109:26c51e87e807 19110:741d94aa92e4
   169                 del marks[mark]
   169                 del marks[mark]
   170                 deleted = True
   170                 deleted = True
   171     return deleted
   171     return deleted
   172 
   172 
   173 def update(repo, parents, node):
   173 def update(repo, parents, node):
       
   174     deletefrom = parents
   174     marks = repo._bookmarks
   175     marks = repo._bookmarks
   175     update = False
   176     update = False
   176     cur = repo._bookmarkcurrent
   177     cur = repo._bookmarkcurrent
   177     if not cur:
   178     if not cur:
   178         return False
   179         return False
   179 
   180 
   180     if marks[cur] in parents:
   181     if marks[cur] in parents:
   181         old = repo[marks[cur]]
   182         old = repo[marks[cur]]
   182         new = repo[node]
   183         new = repo[node]
       
   184         divs = [repo[b] for b in marks
       
   185                 if b.split('@', 1)[0] == cur.split('@', 1)[0]]
       
   186         anc = repo.changelog.ancestors([new.rev()])
       
   187         deletefrom = [b.node() for b in divs if b.rev() in anc or b == new]
   183         if old.descendant(new):
   188         if old.descendant(new):
   184             marks[cur] = new.node()
   189             marks[cur] = new.node()
   185             update = True
   190             update = True
   186 
   191 
   187     if deletedivergent(repo, parents, cur):
   192     if deletedivergent(repo, deletefrom, cur):
   188         update = True
   193         update = True
   189 
   194 
   190     if update:
   195     if update:
   191         marks.write()
   196         marks.write()
   192     return update
   197     return update