mercurial/logcmdutil.py
branchstable
changeset 43445 d1b9d2c6ec96
parent 43117 8ff1ecfadcd1
child 43811 29adf0a087a1
equal deleted inserted replaced
43444:66d5c8c3afed 43445:d1b9d2c6ec96
   928                 _(b'cannot follow file not in parent revision: "%s"') % fname
   928                 _(b'cannot follow file not in parent revision: "%s"') % fname
   929             )
   929             )
   930         fctx = wctx.filectx(fname)
   930         fctx = wctx.filectx(fname)
   931         for fctx, linerange in dagop.blockancestors(fctx, fromline, toline):
   931         for fctx, linerange in dagop.blockancestors(fctx, fromline, toline):
   932             rev = fctx.introrev()
   932             rev = fctx.introrev()
       
   933             if rev is None:
       
   934                 rev = wdirrev
   933             if rev not in userrevs:
   935             if rev not in userrevs:
   934                 continue
   936                 continue
   935             linerangesbyrev.setdefault(rev, {}).setdefault(
   937             linerangesbyrev.setdefault(rev, {}).setdefault(
   936                 fctx.path(), []
   938                 fctx.path(), []
   937             ).append(linerange)
   939             ).append(linerange)
   938 
   940 
   939     def nofilterhunksfn(fctx, hunks):
   941     def nofilterhunksfn(fctx, hunks):
   940         return hunks
   942         return hunks
   941 
   943 
   942     def hunksfilter(ctx):
   944     def hunksfilter(ctx):
   943         fctxlineranges = linerangesbyrev.get(ctx.rev())
   945         fctxlineranges = linerangesbyrev.get(scmutil.intrev(ctx))
   944         if fctxlineranges is None:
   946         if fctxlineranges is None:
   945             return nofilterhunksfn
   947             return nofilterhunksfn
   946 
   948 
   947         def filterfn(fctx, hunks):
   949         def filterfn(fctx, hunks):
   948             lineranges = fctxlineranges.get(fctx.path())
   950             lineranges = fctxlineranges.get(fctx.path())
   958                     yield hunk
   960                     yield hunk
   959 
   961 
   960         return filterfn
   962         return filterfn
   961 
   963 
   962     def filematcher(ctx):
   964     def filematcher(ctx):
   963         files = list(linerangesbyrev.get(ctx.rev(), []))
   965         files = list(linerangesbyrev.get(scmutil.intrev(ctx), []))
   964         return scmutil.matchfiles(repo, files)
   966         return scmutil.matchfiles(repo, files)
   965 
   967 
   966     revs = sorted(linerangesbyrev, reverse=True)
   968     revs = sorted(linerangesbyrev, reverse=True)
   967 
   969 
   968     differ = changesetdiffer()
   970     differ = changesetdiffer()