436 def debugcapabilities(ui, path, **opts): |
436 def debugcapabilities(ui, path, **opts): |
437 """lists the capabilities of a remote peer""" |
437 """lists the capabilities of a remote peer""" |
438 opts = pycompat.byteskwargs(opts) |
438 opts = pycompat.byteskwargs(opts) |
439 peer = hg.peer(ui, opts, path) |
439 peer = hg.peer(ui, opts, path) |
440 caps = peer.capabilities() |
440 caps = peer.capabilities() |
441 ui.write(b'Main capabilities:\n') |
441 ui.writenoi18n(b'Main capabilities:\n') |
442 for c in sorted(caps): |
442 for c in sorted(caps): |
443 ui.write(b' %s\n' % c) |
443 ui.write(b' %s\n' % c) |
444 b2caps = bundle2.bundle2caps(peer) |
444 b2caps = bundle2.bundle2caps(peer) |
445 if b2caps: |
445 if b2caps: |
446 ui.write(b'Bundle2 capabilities:\n') |
446 ui.writenoi18n(b'Bundle2 capabilities:\n') |
447 for key, values in sorted(b2caps.iteritems()): |
447 for key, values in sorted(b2caps.iteritems()): |
448 ui.write(b' %s\n' % key) |
448 ui.write(b' %s\n' % key) |
449 for v in values: |
449 for v in values: |
450 ui.write(b' %s\n' % v) |
450 ui.write(b' %s\n' % v) |
451 |
451 |
967 data[b'nb-revs'] = len(repo.revs(b'all()')) |
967 data[b'nb-revs'] = len(repo.revs(b'all()')) |
968 data[b'nb-revs-common'] = len(repo.revs(b'::%ln', common)) |
968 data[b'nb-revs-common'] = len(repo.revs(b'::%ln', common)) |
969 data[b'nb-revs-missing'] = data[b'nb-revs'] - data[b'nb-revs-common'] |
969 data[b'nb-revs-missing'] = data[b'nb-revs'] - data[b'nb-revs-common'] |
970 |
970 |
971 # display discovery summary |
971 # display discovery summary |
972 ui.write(b"elapsed time: %(elapsed)f seconds\n" % data) |
972 ui.writenoi18n(b"elapsed time: %(elapsed)f seconds\n" % data) |
973 ui.write(b"heads summary:\n") |
973 ui.writenoi18n(b"heads summary:\n") |
974 ui.write(b" total common heads: %(nb-common)9d\n" % data) |
974 ui.writenoi18n(b" total common heads: %(nb-common)9d\n" % data) |
975 ui.write(b" also local heads: %(nb-common-local)9d\n" % data) |
975 ui.writenoi18n(b" also local heads: %(nb-common-local)9d\n" % data) |
976 ui.write(b" also remote heads: %(nb-common-remote)9d\n" % data) |
976 ui.writenoi18n(b" also remote heads: %(nb-common-remote)9d\n" % data) |
977 ui.write(b" both: %(nb-common-both)9d\n" % data) |
977 ui.writenoi18n(b" both: %(nb-common-both)9d\n" % data) |
978 ui.write(b" local heads: %(nb-local)9d\n" % data) |
978 ui.writenoi18n(b" local heads: %(nb-local)9d\n" % data) |
979 ui.write(b" common: %(nb-common-local)9d\n" % data) |
979 ui.writenoi18n(b" common: %(nb-common-local)9d\n" % data) |
980 ui.write(b" missing: %(nb-local-missing)9d\n" % data) |
980 ui.writenoi18n(b" missing: %(nb-local-missing)9d\n" % data) |
981 ui.write(b" remote heads: %(nb-remote)9d\n" % data) |
981 ui.writenoi18n(b" remote heads: %(nb-remote)9d\n" % data) |
982 ui.write(b" common: %(nb-common-remote)9d\n" % data) |
982 ui.writenoi18n(b" common: %(nb-common-remote)9d\n" % data) |
983 ui.write(b" unknown: %(nb-remote-unknown)9d\n" % data) |
983 ui.writenoi18n(b" unknown: %(nb-remote-unknown)9d\n" % data) |
984 ui.write(b"local changesets: %(nb-revs)9d\n" % data) |
984 ui.writenoi18n(b"local changesets: %(nb-revs)9d\n" % data) |
985 ui.write(b" common: %(nb-revs-common)9d\n" % data) |
985 ui.writenoi18n(b" common: %(nb-revs-common)9d\n" % data) |
986 ui.write(b" missing: %(nb-revs-missing)9d\n" % data) |
986 ui.writenoi18n(b" missing: %(nb-revs-missing)9d\n" % data) |
987 |
987 |
988 if ui.verbose: |
988 if ui.verbose: |
989 ui.write( |
989 ui.writenoi18n( |
990 b"common heads: %s\n" % b" ".join(sorted(short(n) for n in common)) |
990 b"common heads: %s\n" % b" ".join(sorted(short(n) for n in common)) |
991 ) |
991 ) |
992 |
992 |
993 |
993 |
994 _chunksize = 4 << 10 |
994 _chunksize = 4 << 10 |
1243 |
1243 |
1244 |
1244 |
1245 @command(b'debugfsinfo', [], _(b'[PATH]'), norepo=True) |
1245 @command(b'debugfsinfo', [], _(b'[PATH]'), norepo=True) |
1246 def debugfsinfo(ui, path=b"."): |
1246 def debugfsinfo(ui, path=b"."): |
1247 """show information detected about current filesystem""" |
1247 """show information detected about current filesystem""" |
1248 ui.write(b'path: %s\n' % path) |
1248 ui.writenoi18n(b'path: %s\n' % path) |
1249 ui.write(b'mounted on: %s\n' % (util.getfsmountpoint(path) or b'(unknown)')) |
1249 ui.writenoi18n(b'mounted on: %s\n' % (util.getfsmountpoint(path) or b'(unknown)')) |
1250 ui.write(b'exec: %s\n' % (util.checkexec(path) and b'yes' or b'no')) |
1250 ui.writenoi18n(b'exec: %s\n' % (util.checkexec(path) and b'yes' or b'no')) |
1251 ui.write(b'fstype: %s\n' % (util.getfstype(path) or b'(unknown)')) |
1251 ui.writenoi18n(b'fstype: %s\n' % (util.getfstype(path) or b'(unknown)')) |
1252 ui.write(b'symlink: %s\n' % (util.checklink(path) and b'yes' or b'no')) |
1252 ui.writenoi18n(b'symlink: %s\n' % (util.checklink(path) and b'yes' or b'no')) |
1253 ui.write(b'hardlink: %s\n' % (util.checknlink(path) and b'yes' or b'no')) |
1253 ui.writenoi18n(b'hardlink: %s\n' % (util.checknlink(path) and b'yes' or b'no')) |
1254 casesensitive = b'(unknown)' |
1254 casesensitive = b'(unknown)' |
1255 try: |
1255 try: |
1256 with pycompat.namedtempfile(prefix=b'.debugfsinfo', dir=path) as f: |
1256 with pycompat.namedtempfile(prefix=b'.debugfsinfo', dir=path) as f: |
1257 casesensitive = util.fscasesensitive(f.name) and b'yes' or b'no' |
1257 casesensitive = util.fscasesensitive(f.name) and b'yes' or b'no' |
1258 except OSError: |
1258 except OSError: |
1259 pass |
1259 pass |
1260 ui.write(b'case-sensitive: %s\n' % casesensitive) |
1260 ui.writenoi18n(b'case-sensitive: %s\n' % casesensitive) |
1261 |
1261 |
1262 |
1262 |
1263 @command( |
1263 @command( |
1264 b'debuggetbundle', |
1264 b'debuggetbundle', |
1265 [ |
1265 [ |
1918 return b'null' |
1918 return b'null' |
1919 else: |
1919 else: |
1920 return h |
1920 return h |
1921 |
1921 |
1922 def printrecords(version): |
1922 def printrecords(version): |
1923 ui.write(b'* version %d records\n' % version) |
1923 ui.writenoi18n(b'* version %d records\n' % version) |
1924 if version == 1: |
1924 if version == 1: |
1925 records = v1records |
1925 records = v1records |
1926 else: |
1926 else: |
1927 records = v2records |
1927 records = v2records |
1928 |
1928 |
1929 for rtype, record in records: |
1929 for rtype, record in records: |
1930 # pretty print some record types |
1930 # pretty print some record types |
1931 if rtype == b'L': |
1931 if rtype == b'L': |
1932 ui.write(b'local: %s\n' % record) |
1932 ui.writenoi18n(b'local: %s\n' % record) |
1933 elif rtype == b'O': |
1933 elif rtype == b'O': |
1934 ui.write(b'other: %s\n' % record) |
1934 ui.writenoi18n(b'other: %s\n' % record) |
1935 elif rtype == b'm': |
1935 elif rtype == b'm': |
1936 driver, mdstate = record.split(b'\0', 1) |
1936 driver, mdstate = record.split(b'\0', 1) |
1937 ui.write(b'merge driver: %s (state "%s")\n' % (driver, mdstate)) |
1937 ui.writenoi18n(b'merge driver: %s (state "%s")\n' % (driver, mdstate)) |
1938 elif rtype in b'FDC': |
1938 elif rtype in b'FDC': |
1939 r = record.split(b'\0') |
1939 r = record.split(b'\0') |
1940 f, state, hash, lfile, afile, anode, ofile = r[0:7] |
1940 f, state, hash, lfile, afile, anode, ofile = r[0:7] |
1941 if version == 1: |
1941 if version == 1: |
1942 onode = b'not stored in v1 format' |
1942 onode = b'not stored in v1 format' |
1943 flags = r[7] |
1943 flags = r[7] |
1944 else: |
1944 else: |
1945 onode, flags = r[7:9] |
1945 onode, flags = r[7:9] |
1946 ui.write( |
1946 ui.writenoi18n( |
1947 b'file: %s (record type "%s", state "%s", hash %s)\n' |
1947 b'file: %s (record type "%s", state "%s", hash %s)\n' |
1948 % (f, rtype, state, _hashornull(hash)) |
1948 % (f, rtype, state, _hashornull(hash)) |
1949 ) |
1949 ) |
1950 ui.write(b' local path: %s (flags "%s")\n' % (lfile, flags)) |
1950 ui.writenoi18n(b' local path: %s (flags "%s")\n' % (lfile, flags)) |
1951 ui.write( |
1951 ui.writenoi18n( |
1952 b' ancestor path: %s (node %s)\n' |
1952 b' ancestor path: %s (node %s)\n' |
1953 % (afile, _hashornull(anode)) |
1953 % (afile, _hashornull(anode)) |
1954 ) |
1954 ) |
1955 ui.write( |
1955 ui.writenoi18n( |
1956 b' other path: %s (node %s)\n' |
1956 b' other path: %s (node %s)\n' |
1957 % (ofile, _hashornull(onode)) |
1957 % (ofile, _hashornull(onode)) |
1958 ) |
1958 ) |
1959 elif rtype == b'f': |
1959 elif rtype == b'f': |
1960 filename, rawextras = record.split(b'\0', 1) |
1960 filename, rawextras = record.split(b'\0', 1) |
1963 extrastrings = [] |
1963 extrastrings = [] |
1964 while i < len(extras): |
1964 while i < len(extras): |
1965 extrastrings.append(b'%s = %s' % (extras[i], extras[i + 1])) |
1965 extrastrings.append(b'%s = %s' % (extras[i], extras[i + 1])) |
1966 i += 2 |
1966 i += 2 |
1967 |
1967 |
1968 ui.write( |
1968 ui.writenoi18n( |
1969 b'file extras: %s (%s)\n' |
1969 b'file extras: %s (%s)\n' |
1970 % (filename, b', '.join(extrastrings)) |
1970 % (filename, b', '.join(extrastrings)) |
1971 ) |
1971 ) |
1972 elif rtype == b'l': |
1972 elif rtype == b'l': |
1973 labels = record.split(b'\0', 2) |
1973 labels = record.split(b'\0', 2) |
1974 labels = [l for l in labels if len(l) > 0] |
1974 labels = [l for l in labels if len(l) > 0] |
1975 ui.write(b'labels:\n') |
1975 ui.writenoi18n(b'labels:\n') |
1976 ui.write((b' local: %s\n' % labels[0])) |
1976 ui.write((b' local: %s\n' % labels[0])) |
1977 ui.write((b' other: %s\n' % labels[1])) |
1977 ui.write((b' other: %s\n' % labels[1])) |
1978 if len(labels) > 2: |
1978 if len(labels) > 2: |
1979 ui.write((b' base: %s\n' % labels[2])) |
1979 ui.write((b' base: %s\n' % labels[2])) |
1980 else: |
1980 else: |
1981 ui.write( |
1981 ui.writenoi18n( |
1982 b'unrecognized entry: %s\t%s\n' |
1982 b'unrecognized entry: %s\t%s\n' |
1983 % (rtype, record.replace(b'\0', b'\t')) |
1983 % (rtype, record.replace(b'\0', b'\t')) |
1984 ) |
1984 ) |
1985 |
1985 |
1986 # Avoid mergestate.read() since it may raise an exception for unsupported |
1986 # Avoid mergestate.read() since it may raise an exception for unsupported |
2379 """ |
2379 """ |
2380 opts = pycompat.byteskwargs(opts) |
2380 opts = pycompat.byteskwargs(opts) |
2381 overrides = {} |
2381 overrides = {} |
2382 if opts[b'tool']: |
2382 if opts[b'tool']: |
2383 overrides[(b'ui', b'forcemerge')] = opts[b'tool'] |
2383 overrides[(b'ui', b'forcemerge')] = opts[b'tool'] |
2384 ui.note(b'with --tool %r\n' % (pycompat.bytestr(opts[b'tool']))) |
2384 ui.notenoi18n(b'with --tool %r\n' % (pycompat.bytestr(opts[b'tool']))) |
2385 |
2385 |
2386 with ui.configoverride(overrides, b'debugmergepatterns'): |
2386 with ui.configoverride(overrides, b'debugmergepatterns'): |
2387 hgmerge = encoding.environ.get(b"HGMERGE") |
2387 hgmerge = encoding.environ.get(b"HGMERGE") |
2388 if hgmerge is not None: |
2388 if hgmerge is not None: |
2389 ui.note(b'with HGMERGE=%r\n' % (pycompat.bytestr(hgmerge))) |
2389 ui.notenoi18n(b'with HGMERGE=%r\n' % (pycompat.bytestr(hgmerge))) |
2390 uimerge = ui.config(b"ui", b"merge") |
2390 uimerge = ui.config(b"ui", b"merge") |
2391 if uimerge: |
2391 if uimerge: |
2392 ui.note(b'with ui.merge=%r\n' % (pycompat.bytestr(uimerge))) |
2392 ui.notenoi18n(b'with ui.merge=%r\n' % (pycompat.bytestr(uimerge))) |
2393 |
2393 |
2394 ctx = scmutil.revsingle(repo, opts.get(b'rev')) |
2394 ctx = scmutil.revsingle(repo, opts.get(b'rev')) |
2395 m = scmutil.match(ctx, pats, opts) |
2395 m = scmutil.match(ctx, pats, opts) |
2396 changedelete = opts[b'changedelete'] |
2396 changedelete = opts[b'changedelete'] |
2397 for path in ctx.walk(m): |
2397 for path in ctx.walk(m): |
2783 if total: |
2783 if total: |
2784 return (value, 100 * float(value) / total) |
2784 return (value, 100 * float(value) / total) |
2785 else: |
2785 else: |
2786 return value, 100.0 |
2786 return value, 100.0 |
2787 |
2787 |
2788 ui.write(b'format : %d\n' % format) |
2788 ui.writenoi18n(b'format : %d\n' % format) |
2789 ui.write(b'flags : %s\n' % b', '.join(flags)) |
2789 ui.writenoi18n(b'flags : %s\n' % b', '.join(flags)) |
2790 |
2790 |
2791 ui.write(b'\n') |
2791 ui.write(b'\n') |
2792 fmt = pcfmtstr(totalsize) |
2792 fmt = pcfmtstr(totalsize) |
2793 fmt2 = dfmtstr(totalsize) |
2793 fmt2 = dfmtstr(totalsize) |
2794 ui.write(b'revisions : ' + fmt2 % numrevs) |
2794 ui.writenoi18n(b'revisions : ' + fmt2 % numrevs) |
2795 ui.write(b' merges : ' + fmt % pcfmt(nummerges, numrevs)) |
2795 ui.writenoi18n(b' merges : ' + fmt % pcfmt(nummerges, numrevs)) |
2796 ui.write(b' normal : ' + fmt % pcfmt(numrevs - nummerges, numrevs)) |
2796 ui.writenoi18n(b' normal : ' + fmt % pcfmt(numrevs - nummerges, numrevs)) |
2797 ui.write(b'revisions : ' + fmt2 % numrevs) |
2797 ui.writenoi18n(b'revisions : ' + fmt2 % numrevs) |
2798 ui.write(b' empty : ' + fmt % pcfmt(numempty, numrevs)) |
2798 ui.writenoi18n(b' empty : ' + fmt % pcfmt(numempty, numrevs)) |
2799 ui.write( |
2799 ui.writenoi18n( |
2800 b' text : ' |
2800 b' text : ' |
2801 + fmt % pcfmt(numemptytext, numemptytext + numemptydelta) |
2801 + fmt % pcfmt(numemptytext, numemptytext + numemptydelta) |
2802 ) |
2802 ) |
2803 ui.write( |
2803 ui.writenoi18n( |
2804 b' delta : ' |
2804 b' delta : ' |
2805 + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta) |
2805 + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta) |
2806 ) |
2806 ) |
2807 ui.write(b' snapshot : ' + fmt % pcfmt(numfull + numsemi, numrevs)) |
2807 ui.writenoi18n(b' snapshot : ' + fmt % pcfmt(numfull + numsemi, numrevs)) |
2808 for depth in sorted(numsnapdepth): |
2808 for depth in sorted(numsnapdepth): |
2809 ui.write( |
2809 ui.write( |
2810 (b' lvl-%-3d : ' % depth) |
2810 (b' lvl-%-3d : ' % depth) |
2811 + fmt % pcfmt(numsnapdepth[depth], numrevs) |
2811 + fmt % pcfmt(numsnapdepth[depth], numrevs) |
2812 ) |
2812 ) |
2813 ui.write(b' deltas : ' + fmt % pcfmt(numdeltas, numrevs)) |
2813 ui.writenoi18n(b' deltas : ' + fmt % pcfmt(numdeltas, numrevs)) |
2814 ui.write(b'revision size : ' + fmt2 % totalsize) |
2814 ui.writenoi18n(b'revision size : ' + fmt2 % totalsize) |
2815 ui.write( |
2815 ui.writenoi18n( |
2816 b' snapshot : ' + fmt % pcfmt(fulltotal + semitotal, totalsize) |
2816 b' snapshot : ' + fmt % pcfmt(fulltotal + semitotal, totalsize) |
2817 ) |
2817 ) |
2818 for depth in sorted(numsnapdepth): |
2818 for depth in sorted(numsnapdepth): |
2819 ui.write( |
2819 ui.write( |
2820 (b' lvl-%-3d : ' % depth) |
2820 (b' lvl-%-3d : ' % depth) |
2821 + fmt % pcfmt(snaptotal[depth], totalsize) |
2821 + fmt % pcfmt(snaptotal[depth], totalsize) |
2822 ) |
2822 ) |
2823 ui.write(b' deltas : ' + fmt % pcfmt(deltatotal, totalsize)) |
2823 ui.writenoi18n(b' deltas : ' + fmt % pcfmt(deltatotal, totalsize)) |
2824 |
2824 |
2825 def fmtchunktype(chunktype): |
2825 def fmtchunktype(chunktype): |
2826 if chunktype == b'empty': |
2826 if chunktype == b'empty': |
2827 return b' %s : ' % chunktype |
2827 return b' %s : ' % chunktype |
2828 elif chunktype in pycompat.bytestr(string.ascii_letters): |
2828 elif chunktype in pycompat.bytestr(string.ascii_letters): |
2829 return b' 0x%s (%s) : ' % (hex(chunktype), chunktype) |
2829 return b' 0x%s (%s) : ' % (hex(chunktype), chunktype) |
2830 else: |
2830 else: |
2831 return b' 0x%s : ' % hex(chunktype) |
2831 return b' 0x%s : ' % hex(chunktype) |
2832 |
2832 |
2833 ui.write(b'\n') |
2833 ui.write(b'\n') |
2834 ui.write(b'chunks : ' + fmt2 % numrevs) |
2834 ui.writenoi18n(b'chunks : ' + fmt2 % numrevs) |
2835 for chunktype in sorted(chunktypecounts): |
2835 for chunktype in sorted(chunktypecounts): |
2836 ui.write(fmtchunktype(chunktype)) |
2836 ui.write(fmtchunktype(chunktype)) |
2837 ui.write(fmt % pcfmt(chunktypecounts[chunktype], numrevs)) |
2837 ui.write(fmt % pcfmt(chunktypecounts[chunktype], numrevs)) |
2838 ui.write(b'chunks size : ' + fmt2 % totalsize) |
2838 ui.writenoi18n(b'chunks size : ' + fmt2 % totalsize) |
2839 for chunktype in sorted(chunktypecounts): |
2839 for chunktype in sorted(chunktypecounts): |
2840 ui.write(fmtchunktype(chunktype)) |
2840 ui.write(fmtchunktype(chunktype)) |
2841 ui.write(fmt % pcfmt(chunktypesizes[chunktype], totalsize)) |
2841 ui.write(fmt % pcfmt(chunktypesizes[chunktype], totalsize)) |
2842 |
2842 |
2843 ui.write(b'\n') |
2843 ui.write(b'\n') |
2844 fmt = dfmtstr(max(avgchainlen, maxchainlen, maxchainspan, compratio)) |
2844 fmt = dfmtstr(max(avgchainlen, maxchainlen, maxchainspan, compratio)) |
2845 ui.write(b'avg chain length : ' + fmt % avgchainlen) |
2845 ui.writenoi18n(b'avg chain length : ' + fmt % avgchainlen) |
2846 ui.write(b'max chain length : ' + fmt % maxchainlen) |
2846 ui.writenoi18n(b'max chain length : ' + fmt % maxchainlen) |
2847 ui.write(b'max chain reach : ' + fmt % maxchainspan) |
2847 ui.writenoi18n(b'max chain reach : ' + fmt % maxchainspan) |
2848 ui.write(b'compression ratio : ' + fmt % compratio) |
2848 ui.writenoi18n(b'compression ratio : ' + fmt % compratio) |
2849 |
2849 |
2850 if format > 0: |
2850 if format > 0: |
2851 ui.write(b'\n') |
2851 ui.write(b'\n') |
2852 ui.write( |
2852 ui.writenoi18n( |
2853 b'uncompressed data size (min/max/avg) : %d / %d / %d\n' |
2853 b'uncompressed data size (min/max/avg) : %d / %d / %d\n' |
2854 % tuple(datasize) |
2854 % tuple(datasize) |
2855 ) |
2855 ) |
2856 ui.write( |
2856 ui.writenoi18n( |
2857 b'full revision size (min/max/avg) : %d / %d / %d\n' |
2857 b'full revision size (min/max/avg) : %d / %d / %d\n' |
2858 % tuple(fullsize) |
2858 % tuple(fullsize) |
2859 ) |
2859 ) |
2860 ui.write( |
2860 ui.writenoi18n( |
2861 b'inter-snapshot size (min/max/avg) : %d / %d / %d\n' |
2861 b'inter-snapshot size (min/max/avg) : %d / %d / %d\n' |
2862 % tuple(semisize) |
2862 % tuple(semisize) |
2863 ) |
2863 ) |
2864 for depth in sorted(snapsizedepth): |
2864 for depth in sorted(snapsizedepth): |
2865 if depth == 0: |
2865 if depth == 0: |
2866 continue |
2866 continue |
2867 ui.write( |
2867 ui.writenoi18n( |
2868 b' level-%-3d (min/max/avg) : %d / %d / %d\n' |
2868 b' level-%-3d (min/max/avg) : %d / %d / %d\n' |
2869 % ((depth,) + tuple(snapsizedepth[depth])) |
2869 % ((depth,) + tuple(snapsizedepth[depth])) |
2870 ) |
2870 ) |
2871 ui.write( |
2871 ui.writenoi18n( |
2872 b'delta size (min/max/avg) : %d / %d / %d\n' |
2872 b'delta size (min/max/avg) : %d / %d / %d\n' |
2873 % tuple(deltasize) |
2873 % tuple(deltasize) |
2874 ) |
2874 ) |
2875 |
2875 |
2876 if numdeltas > 0: |
2876 if numdeltas > 0: |
2877 ui.write(b'\n') |
2877 ui.write(b'\n') |
2878 fmt = pcfmtstr(numdeltas) |
2878 fmt = pcfmtstr(numdeltas) |
2879 fmt2 = pcfmtstr(numdeltas, 4) |
2879 fmt2 = pcfmtstr(numdeltas, 4) |
2880 ui.write(b'deltas against prev : ' + fmt % pcfmt(numprev, numdeltas)) |
2880 ui.writenoi18n(b'deltas against prev : ' + fmt % pcfmt(numprev, numdeltas)) |
2881 if numprev > 0: |
2881 if numprev > 0: |
2882 ui.write( |
2882 ui.writenoi18n( |
2883 b' where prev = p1 : ' + fmt2 % pcfmt(nump1prev, numprev) |
2883 b' where prev = p1 : ' + fmt2 % pcfmt(nump1prev, numprev) |
2884 ) |
2884 ) |
2885 ui.write( |
2885 ui.writenoi18n( |
2886 b' where prev = p2 : ' + fmt2 % pcfmt(nump2prev, numprev) |
2886 b' where prev = p2 : ' + fmt2 % pcfmt(nump2prev, numprev) |
2887 ) |
2887 ) |
2888 ui.write( |
2888 ui.writenoi18n( |
2889 b' other : ' + fmt2 % pcfmt(numoprev, numprev) |
2889 b' other : ' + fmt2 % pcfmt(numoprev, numprev) |
2890 ) |
2890 ) |
2891 if gdelta: |
2891 if gdelta: |
2892 ui.write(b'deltas against p1 : ' + fmt % pcfmt(nump1, numdeltas)) |
2892 ui.writenoi18n(b'deltas against p1 : ' + fmt % pcfmt(nump1, numdeltas)) |
2893 ui.write(b'deltas against p2 : ' + fmt % pcfmt(nump2, numdeltas)) |
2893 ui.writenoi18n(b'deltas against p2 : ' + fmt % pcfmt(nump2, numdeltas)) |
2894 ui.write( |
2894 ui.writenoi18n( |
2895 b'deltas against other : ' + fmt % pcfmt(numother, numdeltas) |
2895 b'deltas against other : ' + fmt % pcfmt(numother, numdeltas) |
2896 ) |
2896 ) |
2897 |
2897 |
2898 |
2898 |
2899 @command( |
2899 @command( |
3107 |
3107 |
3108 if opts[b'verify_optimized']: |
3108 if opts[b'verify_optimized']: |
3109 arevs = revset.makematcher(treebystage[b'analyzed'])(repo) |
3109 arevs = revset.makematcher(treebystage[b'analyzed'])(repo) |
3110 brevs = revset.makematcher(treebystage[b'optimized'])(repo) |
3110 brevs = revset.makematcher(treebystage[b'optimized'])(repo) |
3111 if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose): |
3111 if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose): |
3112 ui.write(b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n") |
3112 ui.writenoi18n(b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n") |
3113 ui.write(b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n") |
3113 ui.writenoi18n(b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n") |
3114 arevs = list(arevs) |
3114 arevs = list(arevs) |
3115 brevs = list(brevs) |
3115 brevs = list(brevs) |
3116 if arevs == brevs: |
3116 if arevs == brevs: |
3117 return 0 |
3117 return 0 |
3118 ui.write(b'--- analyzed\n', label=b'diff.file_a') |
3118 ui.writenoi18n(b'--- analyzed\n', label=b'diff.file_a') |
3119 ui.write(b'+++ optimized\n', label=b'diff.file_b') |
3119 ui.writenoi18n(b'+++ optimized\n', label=b'diff.file_b') |
3120 sm = difflib.SequenceMatcher(None, arevs, brevs) |
3120 sm = difflib.SequenceMatcher(None, arevs, brevs) |
3121 for tag, alo, ahi, blo, bhi in sm.get_opcodes(): |
3121 for tag, alo, ahi, blo, bhi in sm.get_opcodes(): |
3122 if tag in (r'delete', r'replace'): |
3122 if tag in (r'delete', r'replace'): |
3123 for c in arevs[alo:ahi]: |
3123 for c in arevs[alo:ahi]: |
3124 ui.write(b'-%d\n' % c, label=b'diff.deleted') |
3124 ui.write(b'-%d\n' % c, label=b'diff.deleted') |
3412 aliases = ui.configitems(b'templatealias') |
3412 aliases = ui.configitems(b'templatealias') |
3413 tree = templater.parse(tmpl) |
3413 tree = templater.parse(tmpl) |
3414 ui.note(templater.prettyformat(tree), b'\n') |
3414 ui.note(templater.prettyformat(tree), b'\n') |
3415 newtree = templater.expandaliases(tree, aliases) |
3415 newtree = templater.expandaliases(tree, aliases) |
3416 if newtree != tree: |
3416 if newtree != tree: |
3417 ui.note(b"* expanded:\n", templater.prettyformat(newtree), b'\n') |
3417 ui.notenoi18n(b"* expanded:\n", templater.prettyformat(newtree), b'\n') |
3418 |
3418 |
3419 if revs is None: |
3419 if revs is None: |
3420 tres = formatter.templateresources(ui, repo) |
3420 tres = formatter.templateresources(ui, repo) |
3421 t = formatter.maketemplater(ui, tmpl, resources=tres) |
3421 t = formatter.maketemplater(ui, tmpl, resources=tres) |
3422 if ui.verbose: |
3422 if ui.verbose: |
3423 kwds, funcs = t.symbolsuseddefault() |
3423 kwds, funcs = t.symbolsuseddefault() |
3424 ui.write(b"* keywords: %s\n" % b', '.join(sorted(kwds))) |
3424 ui.writenoi18n(b"* keywords: %s\n" % b', '.join(sorted(kwds))) |
3425 ui.write(b"* functions: %s\n" % b', '.join(sorted(funcs))) |
3425 ui.writenoi18n(b"* functions: %s\n" % b', '.join(sorted(funcs))) |
3426 ui.write(t.renderdefault(props)) |
3426 ui.write(t.renderdefault(props)) |
3427 else: |
3427 else: |
3428 displayer = logcmdutil.maketemplater(ui, repo, tmpl) |
3428 displayer = logcmdutil.maketemplater(ui, repo, tmpl) |
3429 if ui.verbose: |
3429 if ui.verbose: |
3430 kwds, funcs = displayer.t.symbolsuseddefault() |
3430 kwds, funcs = displayer.t.symbolsuseddefault() |
3431 ui.write(b"* keywords: %s\n" % b', '.join(sorted(kwds))) |
3431 ui.writenoi18n(b"* keywords: %s\n" % b', '.join(sorted(kwds))) |
3432 ui.write(b"* functions: %s\n" % b', '.join(sorted(funcs))) |
3432 ui.writenoi18n(b"* functions: %s\n" % b', '.join(sorted(funcs))) |
3433 for r in revs: |
3433 for r in revs: |
3434 displayer.show(repo[r], **pycompat.strkwargs(props)) |
3434 displayer.show(repo[r], **pycompat.strkwargs(props)) |
3435 displayer.close() |
3435 displayer.close() |
3436 |
3436 |
3437 |
3437 |