hgext/mq.py
changeset 2829 05316bb57d01
parent 2828 12139eedd6a0
child 2830 49988d9f0758
equal deleted inserted replaced
2828:12139eedd6a0 2829:05316bb57d01
   174         guards = self.active()
   174         guards = self.active()
   175         exactneg = [g for g in patchguards if g[0] == '-' and g[1:] in guards]
   175         exactneg = [g for g in patchguards if g[0] == '-' and g[1:] in guards]
   176         if exactneg:
   176         if exactneg:
   177             return False, exactneg[0]
   177             return False, exactneg[0]
   178         pos = [g for g in patchguards if g[0] == '+']
   178         pos = [g for g in patchguards if g[0] == '+']
   179         exactpos = [g for g in pos if g[1:] in guards]
   179         nonpos = [g for g in pos if g[1:] not in guards]
   180         if pos:
   180         if pos:
   181             if exactpos:
   181             if not nonpos:
   182                 return True, exactpos[0]
   182                 return True, ''
   183             return False, ''
   183             return False, nonpos
   184         return True, ''
   184         return True, ''
   185 
   185 
   186     def explain_pushable(self, idx, all_patches=False):
   186     def explain_pushable(self, idx, all_patches=False):
   187         write = all_patches and self.ui.write or self.ui.warn
   187         write = all_patches and self.ui.write or self.ui.warn
   188         if all_patches or self.ui.verbose:
   188         if all_patches or self.ui.verbose:
   199                               self.series[idx])
   199                               self.series[idx])
   200                     else:
   200                     else:
   201                         write(_('allowing %s - guarded by %r\n') %
   201                         write(_('allowing %s - guarded by %r\n') %
   202                               (self.series[idx], why))
   202                               (self.series[idx], why))
   203             if not pushable:
   203             if not pushable:
   204                 if why and why[0] in '-+':
   204                 if why:
   205                     write(_('skipping %s - guarded by %r\n') %
   205                     write(_('skipping %s - guarded by %r\n') %
   206                           (self.series[idx], why))
   206                           (self.series[idx], ' '.join(why)))
   207                 else:
   207                 else:
   208                     write(_('skipping %s - no matching guards\n') %
   208                     write(_('skipping %s - no matching guards\n') %
   209                           self.series[idx])
   209                           self.series[idx])
   210 
   210 
   211     def save_dirty(self):
   211     def save_dirty(self):
  1738         qguard bar.patch +stable    (posative guard)
  1738         qguard bar.patch +stable    (posative guard)
  1739         qselect stable
  1739         qselect stable
  1740 
  1740 
  1741     this sets "stable" guard.  mq will skip foo.patch (because it has
  1741     this sets "stable" guard.  mq will skip foo.patch (because it has
  1742     nagative match) but push bar.patch (because it has posative
  1742     nagative match) but push bar.patch (because it has posative
  1743     match).
  1743     match).  patch is pushed only if all posative guards match and no
       
  1744     nagative guards match.
  1744 
  1745 
  1745     with no arguments, default is to print current active guards.
  1746     with no arguments, default is to print current active guards.
  1746     with arguments, set active guards as given.
  1747     with arguments, set active guards as given.
  1747     
  1748     
  1748     use -n/--none to deactivate guards (no other arguments needed).
  1749     use -n/--none to deactivate guards (no other arguments needed).
  1758         q.set_active(args)
  1759         q.set_active(args)
  1759         q.save_dirty()
  1760         q.save_dirty()
  1760         if not args:
  1761         if not args:
  1761             ui.status(_('guards deactivated\n'))
  1762             ui.status(_('guards deactivated\n'))
  1762         if q.series:
  1763         if q.series:
  1763             pushable = [p for p in q.unapplied(repo) if q.pushable(p[0])[0]]
       
  1764             ui.status(_('%d of %d unapplied patches active\n') %
  1764             ui.status(_('%d of %d unapplied patches active\n') %
  1765                       (len(pushable), len(q.series)))
  1765                       (len(q.unapplied(repo)), len(q.series)))
  1766     elif opts['series']:
  1766     elif opts['series']:
  1767         guards = {}
  1767         guards = {}
  1768         noguards = 0
  1768         noguards = 0
  1769         for gs in q.series_guards:
  1769         for gs in q.series_guards:
  1770             if not gs:
  1770             if not gs: