mercurial/metadata.py
changeset 46113 59fa3890d40a
parent 45942 89a2afe31e82
child 46618 dde86beca388
equal deleted inserted replaced
46112:d6afa9c149c3 46113:59fa3890d40a
     9 from __future__ import absolute_import, print_function
     9 from __future__ import absolute_import, print_function
    10 
    10 
    11 import multiprocessing
    11 import multiprocessing
    12 import struct
    12 import struct
    13 
    13 
       
    14 from .node import (
       
    15     nullid,
       
    16     nullrev,
       
    17 )
    14 from . import (
    18 from . import (
    15     error,
    19     error,
    16     node,
       
    17     pycompat,
    20     pycompat,
    18     util,
    21     util,
    19 )
    22 )
    20 
    23 
    21 from .revlogutils import (
    24 from .revlogutils import (
   237 
   240 
   238 def compute_all_files_changes(ctx):
   241 def compute_all_files_changes(ctx):
   239     """compute the files changed by a revision"""
   242     """compute the files changed by a revision"""
   240     p1 = ctx.p1()
   243     p1 = ctx.p1()
   241     p2 = ctx.p2()
   244     p2 = ctx.p2()
   242     if p1.rev() == node.nullrev and p2.rev() == node.nullrev:
   245     if p1.rev() == nullrev and p2.rev() == nullrev:
   243         return _process_root(ctx)
   246         return _process_root(ctx)
   244     elif p1.rev() != node.nullrev and p2.rev() == node.nullrev:
   247     elif p1.rev() != nullrev and p2.rev() == nullrev:
   245         return _process_linear(p1, ctx)
   248         return _process_linear(p1, ctx)
   246     elif p1.rev() == node.nullrev and p2.rev() != node.nullrev:
   249     elif p1.rev() == nullrev and p2.rev() != nullrev:
   247         # In the wild, one can encounter changeset where p1 is null but p2 is not
   250         # In the wild, one can encounter changeset where p1 is null but p2 is not
   248         return _process_linear(p1, ctx, parent=2)
   251         return _process_linear(p1, ctx, parent=2)
   249     elif p1.rev() == p2.rev():
   252     elif p1.rev() == p2.rev():
   250         # In the wild, one can encounter such "non-merge"
   253         # In the wild, one can encounter such "non-merge"
   251         return _process_linear(p1, ctx)
   254         return _process_linear(p1, ctx)
   421 
   424 
   422     cahs = ctx.repo().changelog.commonancestorsheads(
   425     cahs = ctx.repo().changelog.commonancestorsheads(
   423         p1_ctx.node(), p2_ctx.node()
   426         p1_ctx.node(), p2_ctx.node()
   424     )
   427     )
   425     if not cahs:
   428     if not cahs:
   426         cahs = [node.nullrev]
   429         cahs = [nullrev]
   427     mas = [ctx.repo()[r].manifest() for r in cahs]
   430     mas = [ctx.repo()[r].manifest() for r in cahs]
   428 
   431 
   429     copy_candidates = []
   432     copy_candidates = []
   430 
   433 
   431     # Dealing with case 🄰 happens automatically.  Since there are no entry in
   434     # Dealing with case 🄰 happens automatically.  Since there are no entry in
   558     def mas():
   561     def mas():
   559         p1n = p1.node()
   562         p1n = p1.node()
   560         p2n = p2.node()
   563         p2n = p2.node()
   561         cahs = ctx.repo().changelog.commonancestorsheads(p1n, p2n)
   564         cahs = ctx.repo().changelog.commonancestorsheads(p1n, p2n)
   562         if not cahs:
   565         if not cahs:
   563             cahs = [node.nullrev]
   566             cahs = [nullrev]
   564         return [ctx.repo()[r].manifest() for r in cahs]
   567         return [ctx.repo()[r].manifest() for r in cahs]
   565 
   568 
   566     def deletionfromparent(f):
   569     def deletionfromparent(f):
   567         if f in m1:
   570         if f in m1:
   568             return f not in m2 and all(
   571             return f not in m2 and all(
   595         return merged
   598         return merged
   596     for f in ctx.files():
   599     for f in ctx.files():
   597         if f in ctx:
   600         if f in ctx:
   598             fctx = ctx[f]
   601             fctx = ctx[f]
   599             parents = fctx._filelog.parents(fctx._filenode)
   602             parents = fctx._filelog.parents(fctx._filenode)
   600             if parents[1] != node.nullid:
   603             if parents[1] != nullid:
   601                 merged.append(f)
   604                 merged.append(f)
   602     return merged
   605     return merged
   603 
   606 
   604 
   607 
   605 def computechangesetcopies(ctx):
   608 def computechangesetcopies(ctx):