mercurial/repair.py
changeset 13362 ee01d9d84115
parent 12057 798ef5b19cb1
child 13702 ffd370aa050b
equal deleted inserted replaced
13361:5b4252364ff9 13362:ee01d9d84115
     4 # Copyright 2007 Matt Mackall
     4 # Copyright 2007 Matt Mackall
     5 #
     5 #
     6 # This software may be used and distributed according to the terms of the
     6 # This software may be used and distributed according to the terms of the
     7 # GNU General Public License version 2 or any later version.
     7 # GNU General Public License version 2 or any later version.
     8 
     8 
     9 import changegroup
     9 import changegroup, bookmarks
    10 from node import nullrev, short
    10 from node import nullrev, short
    11 from i18n import _
    11 from i18n import _
    12 import os
    12 import os
    13 
    13 
    14 def _bundle(repo, bases, heads, node, suffix, extranodes=None, compress=True):
    14 def _bundle(repo, bases, heads, node, suffix, extranodes=None, compress=True):
   103                 savebases.append(cl.node(r))
   103                 savebases.append(cl.node(r))
   104 
   104 
   105             saveheads.difference_update(parents)
   105             saveheads.difference_update(parents)
   106             saveheads.add(r)
   106             saveheads.add(r)
   107 
   107 
       
   108     bm = repo._bookmarks
       
   109     updatebm = []
       
   110     for m in bm:
       
   111         rev = repo[bm[m]].rev()
       
   112         if rev in tostrip:
       
   113             updatebm.append(m)
       
   114 
   108     saveheads = [cl.node(r) for r in saveheads]
   115     saveheads = [cl.node(r) for r in saveheads]
   109     files = _collectfiles(repo, striprev)
   116     files = _collectfiles(repo, striprev)
   110 
   117 
   111     extranodes = _collectextranodes(repo, files, striprev)
   118     extranodes = _collectextranodes(repo, files, striprev)
   112 
   119 
   153             if not repo.ui.verbose:
   160             if not repo.ui.verbose:
   154                 repo.ui.popbuffer()
   161                 repo.ui.popbuffer()
   155             f.close()
   162             f.close()
   156             if not keeppartialbundle:
   163             if not keeppartialbundle:
   157                 os.unlink(chgrpfile)
   164                 os.unlink(chgrpfile)
       
   165 
       
   166         for m in updatebm:
       
   167             bm[m] = repo['.'].node()
       
   168         bookmarks.write(repo)
       
   169 
   158     except:
   170     except:
   159         if backupfile:
   171         if backupfile:
   160             ui.warn(_("strip failed, full bundle stored in '%s'\n")
   172             ui.warn(_("strip failed, full bundle stored in '%s'\n")
   161                     % backupfile)
   173                     % backupfile)
   162         elif saveheads:
   174         elif saveheads: