mercurial/commands.py
changeset 2037 f90513a3dbcd
parent 2036 c9226bcc288d
parent 2035 107dc72880f8
child 2042 a514c7509fa9
equal deleted inserted replaced
2036:c9226bcc288d 2037:f90513a3dbcd
   405 
   405 
   406     def use_template(self, t):
   406     def use_template(self, t):
   407         '''set template string to use'''
   407         '''set template string to use'''
   408         self.t.cache['changeset'] = t
   408         self.t.cache['changeset'] = t
   409 
   409 
   410     def write(self, thing):
   410     def write(self, thing, header=False):
   411         '''write expanded template.
   411         '''write expanded template.
   412         uses in-order recursive traverse of iterators.'''
   412         uses in-order recursive traverse of iterators.'''
   413         for t in thing:
   413         for t in thing:
   414             if hasattr(t, '__iter__'):
   414             if hasattr(t, '__iter__'):
   415                 self.write(t)
   415                 self.write(t, header=header)
       
   416             elif header:
       
   417                 self.ui.write_header(t)
   416             else:
   418             else:
   417                 self.ui.write(t)
   419                 self.ui.write(t)
       
   420 
       
   421     def write_header(self, thing):
       
   422         self.write(thing, header=True)
   418 
   423 
   419     def show(self, rev=0, changenode=None, brinfo=None):
   424     def show(self, rev=0, changenode=None, brinfo=None):
   420         '''show a single changeset or file revision'''
   425         '''show a single changeset or file revision'''
   421         log = self.repo.changelog
   426         log = self.repo.changelog
   422         if changenode is None:
   427         if changenode is None:
   547             'rev': rev,
   552             'rev': rev,
   548             'tags': showtags,
   553             'tags': showtags,
   549             }
   554             }
   550 
   555 
   551         try:
   556         try:
       
   557             if self.ui.debugflag and 'header_debug' in self.t:
       
   558                 key = 'header_debug'
       
   559             elif self.ui.quiet and 'header_quiet' in self.t:
       
   560                 key = 'header_quiet'
       
   561             elif self.ui.verbose and 'header_verbose' in self.t:
       
   562                 key = 'header_verbose'
       
   563             elif 'header' in self.t:
       
   564                 key = 'header'
       
   565             else:
       
   566                 key = ''
       
   567             if key:
       
   568                 self.write_header(self.t(key, **props))
   552             if self.ui.debugflag and 'changeset_debug' in self.t:
   569             if self.ui.debugflag and 'changeset_debug' in self.t:
   553                 key = 'changeset_debug'
   570                 key = 'changeset_debug'
   554             elif self.ui.quiet and 'changeset_quiet' in self.t:
   571             elif self.ui.quiet and 'changeset_quiet' in self.t:
   555                 key = 'changeset_quiet'
   572                 key = 'changeset_quiet'
   556             elif self.ui.verbose and 'changeset_verbose' in self.t:
   573             elif self.ui.verbose and 'changeset_verbose' in self.t:
  1253     """find the ancestor revision of two revisions in a given index"""
  1270     """find the ancestor revision of two revisions in a given index"""
  1254     r = revlog.revlog(util.opener(os.getcwd(), audit=False), index, "")
  1271     r = revlog.revlog(util.opener(os.getcwd(), audit=False), index, "")
  1255     a = r.ancestor(r.lookup(rev1), r.lookup(rev2))
  1272     a = r.ancestor(r.lookup(rev1), r.lookup(rev2))
  1256     ui.write("%d:%s\n" % (r.rev(a), hex(a)))
  1273     ui.write("%d:%s\n" % (r.rev(a), hex(a)))
  1257 
  1274 
  1258 def debugcomplete(ui, cmd):
  1275 def debugcomplete(ui, cmd='', **opts):
  1259     """returns the completion list associated with the given command"""
  1276     """returns the completion list associated with the given command"""
       
  1277 
       
  1278     if opts['options']:
       
  1279         options = []
       
  1280         otables = [globalopts]
       
  1281         if cmd:
       
  1282             aliases, entry = find(cmd)
       
  1283             otables.append(entry[1])
       
  1284         for t in otables:
       
  1285             for o in t:
       
  1286                 if o[0]:
       
  1287                     options.append('-%s' % o[0])
       
  1288                 options.append('--%s' % o[1])
       
  1289         ui.write("%s\n" % "\n".join(options))
       
  1290         return
       
  1291 
  1260     clist = findpossible(cmd).keys()
  1292     clist = findpossible(cmd).keys()
  1261     clist.sort()
  1293     clist.sort()
  1262     ui.write("%s\n" % " ".join(clist))
  1294     ui.write("%s\n" % "\n".join(clist))
  1263 
  1295 
  1264 def debugrebuildstate(ui, repo, rev=None):
  1296 def debugrebuildstate(ui, repo, rev=None):
  1265     """rebuild the dirstate as it would look like for the given revision"""
  1297     """rebuild the dirstate as it would look like for the given revision"""
  1266     if not rev:
  1298     if not rev:
  1267         rev = repo.changelog.tip()
  1299         rev = repo.changelog.tip()
  1895         # Implement and delegate some ui protocol.  Save hunks of
  1927         # Implement and delegate some ui protocol.  Save hunks of
  1896         # output for later display in the desired order.
  1928         # output for later display in the desired order.
  1897         def __init__(self, ui):
  1929         def __init__(self, ui):
  1898             self.ui = ui
  1930             self.ui = ui
  1899             self.hunk = {}
  1931             self.hunk = {}
       
  1932             self.header = {}
  1900         def bump(self, rev):
  1933         def bump(self, rev):
  1901             self.rev = rev
  1934             self.rev = rev
  1902             self.hunk[rev] = []
  1935             self.hunk[rev] = []
       
  1936             self.header[rev] = []
  1903         def note(self, *args):
  1937         def note(self, *args):
  1904             if self.verbose:
  1938             if self.verbose:
  1905                 self.write(*args)
  1939                 self.write(*args)
  1906         def status(self, *args):
  1940         def status(self, *args):
  1907             if not self.quiet:
  1941             if not self.quiet:
  1908                 self.write(*args)
  1942                 self.write(*args)
  1909         def write(self, *args):
  1943         def write(self, *args):
  1910             self.hunk[self.rev].append(args)
  1944             self.hunk[self.rev].append(args)
       
  1945         def write_header(self, *args):
       
  1946             self.header[self.rev].append(args)
  1911         def debug(self, *args):
  1947         def debug(self, *args):
  1912             if self.debugflag:
  1948             if self.debugflag:
  1913                 self.write(*args)
  1949                 self.write(*args)
  1914         def __getattr__(self, key):
  1950         def __getattr__(self, key):
  1915             return getattr(self.ui, key)
  1951             return getattr(self.ui, key)
  1962                 prev = (parents and parents[0]) or nullid
  1998                 prev = (parents and parents[0]) or nullid
  1963                 dodiff(du, du, repo, prev, changenode, match=matchfn)
  1999                 dodiff(du, du, repo, prev, changenode, match=matchfn)
  1964                 du.write("\n\n")
  2000                 du.write("\n\n")
  1965         elif st == 'iter':
  2001         elif st == 'iter':
  1966             if count == limit: break
  2002             if count == limit: break
       
  2003             if du.header[rev]:
       
  2004                 for args in du.header[rev]:
       
  2005                     ui.write_header(*args)
  1967             if du.hunk[rev]:
  2006             if du.hunk[rev]:
  1968                 count += 1
  2007                 count += 1
  1969                 for args in du.hunk[rev]:
  2008                 for args in du.hunk[rev]:
  1970                     ui.write(*args)
  2009                     ui.write(*args)
  1971 
  2010 
  2635     for t, n in l:
  2674     for t, n in l:
  2636         try:
  2675         try:
  2637             r = "%5d:%s" % (repo.changelog.rev(n), hex(n))
  2676             r = "%5d:%s" % (repo.changelog.rev(n), hex(n))
  2638         except KeyError:
  2677         except KeyError:
  2639             r = "    ?:?"
  2678             r = "    ?:?"
  2640         ui.write("%-30s %s\n" % (t, r))
  2679         if ui.quiet:
       
  2680             ui.write("%s\n" % t)
       
  2681         else:
       
  2682             ui.write("%-30s %s\n" % (t, r))
  2641 
  2683 
  2642 def tip(ui, repo, **opts):
  2684 def tip(ui, repo, **opts):
  2643     """show the tip revision
  2685     """show the tip revision
  2644 
  2686 
  2645     Show the tip revision.
  2687     Show the tip revision.
  2812            _('forcibly copy over an existing managed file')),
  2854            _('forcibly copy over an existing managed file')),
  2813           ('I', 'include', [], _('include names matching the given patterns')),
  2855           ('I', 'include', [], _('include names matching the given patterns')),
  2814           ('X', 'exclude', [], _('exclude names matching the given patterns'))],
  2856           ('X', 'exclude', [], _('exclude names matching the given patterns'))],
  2815          _('hg copy [OPTION]... [SOURCE]... DEST')),
  2857          _('hg copy [OPTION]... [SOURCE]... DEST')),
  2816     "debugancestor": (debugancestor, [], _('debugancestor INDEX REV1 REV2')),
  2858     "debugancestor": (debugancestor, [], _('debugancestor INDEX REV1 REV2')),
  2817     "debugcomplete": (debugcomplete, [], _('debugcomplete CMD')),
  2859     "debugcomplete":
       
  2860         (debugcomplete,
       
  2861          [('o', 'options', None, _('show the command options'))],
       
  2862          _('debugcomplete [-o] CMD')),
  2818     "debugrebuildstate":
  2863     "debugrebuildstate":
  2819         (debugrebuildstate,
  2864         (debugrebuildstate,
  2820          [('r', 'rev', '', _('revision to rebuild to'))],
  2865          [('r', 'rev', '', _('revision to rebuild to'))],
  2821          _('debugrebuildstate [-r REV] [REV]')),
  2866          _('debugrebuildstate [-r REV] [REV]')),
  2822     "debugcheckstate": (debugcheckstate, [], _('debugcheckstate')),
  2867     "debugcheckstate": (debugcheckstate, [], _('debugcheckstate')),