hgext/mq.py
changeset 2697 6c540dd14c38
parent 2696 be273f6074de
child 2698 c1123e83c8e2
equal deleted inserted replaced
2696:be273f6074de 2697:6c540dd14c38
   706                           top)
   706                           top)
   707         else:
   707         else:
   708             self.ui.write("Now at: %s\n" % top)
   708             self.ui.write("Now at: %s\n" % top)
   709         return ret[0]
   709         return ret[0]
   710 
   710 
   711     def pop(self, repo, patch=None, force=False, update=True, wlock=None):
   711     def pop(self, repo, patch=None, force=False, update=True, all=False,
       
   712             wlock=None):
   712         def getfile(f, rev):
   713         def getfile(f, rev):
   713             t = repo.file(f).read(rev)
   714             t = repo.file(f).read(rev)
   714             try:
   715             try:
   715                 repo.wfile(f, "w").write(t)
   716                 repo.wfile(f, "w").write(t)
   716             except IOError:
   717             except IOError:
   747             self.check_localchanges(repo)
   748             self.check_localchanges(repo)
   748 
   749 
   749         self.applied_dirty = 1;
   750         self.applied_dirty = 1;
   750         end = len(self.applied)
   751         end = len(self.applied)
   751         if not patch:
   752         if not patch:
   752             info = [len(self.applied) - 1] + self.applied[-1].split(':')
   753             if all:
       
   754                 popi = 0
       
   755             else:
       
   756                 popi = len(self.applied) - 1
       
   757         else:
       
   758             popi = info[0] + 1
       
   759             if popi >= end:
       
   760                 self.ui.warn("qpop: %s is already at the top\n" % patch)
       
   761                 return
       
   762         info = [ popi ] + self.applied[popi].split(':')
       
   763 
   753         start = info[0]
   764         start = info[0]
   754         rev = revlog.bin(info[1])
   765         rev = revlog.bin(info[1])
   755 
   766 
   756         # we know there are no local changes, so we can make a simplified
   767         # we know there are no local changes, so we can make a simplified
   757         # form of hg.update.
   768         # form of hg.update.
  1274         q = queue(ui, repo.join(""), repo.join(opts['name']))
  1285         q = queue(ui, repo.join(""), repo.join(opts['name']))
  1275         ui.warn('using patch queue: %s\n' % q.path)
  1286         ui.warn('using patch queue: %s\n' % q.path)
  1276         localupdate = False
  1287         localupdate = False
  1277     else:
  1288     else:
  1278         q = repomap[repo]
  1289         q = repomap[repo]
  1279     if opts['all'] and len(q.applied) > 0:
  1290     q.pop(repo, patch, force=opts['force'], update=localupdate, all=opts['all'])
  1280         patch = q.applied[0].split(':')[1]
       
  1281     q.pop(repo, patch, force=opts['force'], update=localupdate)
       
  1282     q.save_dirty()
  1291     q.save_dirty()
  1283     return 0
  1292     return 0
  1284 
  1293 
  1285 def restore(ui, repo, rev, **opts):
  1294 def restore(ui, repo, rev, **opts):
  1286     """restore the queue state saved by a rev"""
  1295     """restore the queue state saved by a rev"""