mercurial/debugcommands.py
changeset 49676 4302db0f54c8
parent 49660 bd3b6f363fb9
child 49726 4303fa8f4232
equal deleted inserted replaced
49675:0fca63953810 49676:4302db0f54c8
    56     hg,
    56     hg,
    57     httppeer,
    57     httppeer,
    58     localrepo,
    58     localrepo,
    59     lock as lockmod,
    59     lock as lockmod,
    60     logcmdutil,
    60     logcmdutil,
    61     mdiff,
       
    62     mergestate as mergestatemod,
    61     mergestate as mergestatemod,
    63     metadata,
    62     metadata,
    64     obsolete,
    63     obsolete,
    65     obsutil,
    64     obsutil,
    66     pathutil,
    65     pathutil,
    71     registrar,
    70     registrar,
    72     repair,
    71     repair,
    73     repoview,
    72     repoview,
    74     requirements,
    73     requirements,
    75     revlog,
    74     revlog,
    76     revlogutils,
       
    77     revset,
    75     revset,
    78     revsetlang,
    76     revsetlang,
    79     scmutil,
    77     scmutil,
    80     setdiscovery,
    78     setdiscovery,
    81     simplemerge,
    79     simplemerge,
  1027         rev = arg_2
  1025         rev = arg_2
  1028 
  1026 
  1029     rev = int(rev)
  1027     rev = int(rev)
  1030 
  1028 
  1031     revlog = cmdutil.openrevlog(repo, b'debugdeltachain', file_, opts)
  1029     revlog = cmdutil.openrevlog(repo, b'debugdeltachain', file_, opts)
  1032 
       
  1033     deltacomputer = deltautil.deltacomputer(
       
  1034         revlog,
       
  1035         write_debug=ui.write,
       
  1036         debug_search=not ui.quiet,
       
  1037     )
       
  1038 
       
  1039     node = revlog.node(rev)
       
  1040     p1r, p2r = revlog.parentrevs(rev)
  1030     p1r, p2r = revlog.parentrevs(rev)
  1041     p1 = revlog.node(p1r)
  1031 
  1042     p2 = revlog.node(p2r)
  1032     if source == b'full':
  1043     full_text = revlog.revision(rev)
  1033         base_rev = nullrev
  1044     btext = [full_text]
  1034     elif source == b'storage':
  1045     textlen = len(btext[0])
  1035         base_rev = revlog.deltaparent(rev)
  1046     cachedelta = None
  1036     elif source == b'p1':
  1047     flags = revlog.flags(rev)
  1037         base_rev = p1r
  1048 
  1038     elif source == b'p2':
  1049     if source != b'full':
  1039         base_rev = p2r
  1050         if source == b'storage':
  1040     elif source == b'prev':
  1051             base_rev = revlog.deltaparent(rev)
  1041         base_rev = rev - 1
  1052         elif source == b'p1':
  1042     else:
  1053             base_rev = p1r
  1043         raise error.InputError(b"invalid --source value: %s" % source)
  1054         elif source == b'p2':
  1044 
  1055             base_rev = p2r
  1045     revlog_debug.debug_delta_find(ui, revlog, rev, base_rev=base_rev)
  1056         elif source == b'prev':
       
  1057             base_rev = rev - 1
       
  1058         else:
       
  1059             raise error.InputError(b"invalid --source value: %s" % source)
       
  1060 
       
  1061         if base_rev != nullrev:
       
  1062             base_text = revlog.revision(base_rev)
       
  1063             delta = mdiff.textdiff(base_text, full_text)
       
  1064 
       
  1065             cachedelta = (base_rev, delta)
       
  1066             btext = [None]
       
  1067 
       
  1068     revinfo = revlogutils.revisioninfo(
       
  1069         node,
       
  1070         p1,
       
  1071         p2,
       
  1072         btext,
       
  1073         textlen,
       
  1074         cachedelta,
       
  1075         flags,
       
  1076     )
       
  1077 
       
  1078     fh = revlog._datafp()
       
  1079     deltacomputer.finddeltainfo(revinfo, fh, target_rev=rev)
       
  1080 
  1046 
  1081 
  1047 
  1082 @command(
  1048 @command(
  1083     b'debugdirstate|debugstate',
  1049     b'debugdirstate|debugstate',
  1084     [
  1050     [