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')), |