mercurial/logcmdutil.py
changeset 41623 d683aca738cd
parent 41100 6a63ba61e71f
child 41630 035cae1d197f
equal deleted inserted replaced
41622:286eeed14893 41623:d683aca738cd
    56 
    56 
    57 def diffordiffstat(ui, repo, diffopts, node1, node2, match,
    57 def diffordiffstat(ui, repo, diffopts, node1, node2, match,
    58                    changes=None, stat=False, fp=None, graphwidth=0,
    58                    changes=None, stat=False, fp=None, graphwidth=0,
    59                    prefix='', root='', listsubrepos=False, hunksfilterfn=None):
    59                    prefix='', root='', listsubrepos=False, hunksfilterfn=None):
    60     '''show diff or diffstat.'''
    60     '''show diff or diffstat.'''
       
    61     ctx1 = repo[node1]
       
    62     ctx2 = repo[node2]
    61     if root:
    63     if root:
    62         relroot = pathutil.canonpath(repo.root, repo.getcwd(), root)
    64         relroot = pathutil.canonpath(repo.root, repo.getcwd(), root)
    63     else:
    65     else:
    64         relroot = ''
    66         relroot = ''
    65     if relroot != '':
    67     if relroot != '':
    76         diffopts = diffopts.copy(context=0, noprefix=False)
    78         diffopts = diffopts.copy(context=0, noprefix=False)
    77         width = 80
    79         width = 80
    78         if not ui.plain():
    80         if not ui.plain():
    79             width = ui.termwidth() - graphwidth
    81             width = ui.termwidth() - graphwidth
    80 
    82 
    81     chunks = repo[node2].diff(repo[node1], match, changes, opts=diffopts,
    83     chunks = ctx2.diff(ctx1, match, changes, opts=diffopts, prefix=prefix,
    82                               prefix=prefix, relroot=relroot,
    84                        relroot=relroot, hunksfilterfn=hunksfilterfn)
    83                               hunksfilterfn=hunksfilterfn)
       
    84 
    85 
    85     if fp is not None or ui.canwritewithoutlabels():
    86     if fp is not None or ui.canwritewithoutlabels():
    86         out = fp or ui
    87         out = fp or ui
    87         if stat:
    88         if stat:
    88             chunks = [patch.diffstat(util.iterlines(chunks), width=width)]
    89             chunks = [patch.diffstat(util.iterlines(chunks), width=width)]
   103         else:
   104         else:
   104             for chunk, label in chunks:
   105             for chunk, label in chunks:
   105                 ui.write(chunk, label=label)
   106                 ui.write(chunk, label=label)
   106 
   107 
   107     if listsubrepos:
   108     if listsubrepos:
   108         ctx1 = repo[node1]
       
   109         ctx2 = repo[node2]
       
   110         for subpath, sub in scmutil.itersubrepos(ctx1, ctx2):
   109         for subpath, sub in scmutil.itersubrepos(ctx1, ctx2):
   111             tempnode2 = node2
   110             tempnode2 = node2
   112             try:
   111             try:
   113                 if node2 is not None:
   112                 if node2 is not None:
   114                     tempnode2 = ctx2.substate[subpath][1]
   113                     tempnode2 = ctx2.substate[subpath][1]