mercurial/copies.py
changeset 43148 843da18386d5
parent 43147 54e943b28101
child 43198 c16fe77e340a
equal deleted inserted replaced
43147:54e943b28101 43148:843da18386d5
    10 import collections
    10 import collections
    11 import heapq
    11 import heapq
    12 import os
    12 import os
    13 
    13 
    14 from .i18n import _
    14 from .i18n import _
       
    15 
       
    16 
       
    17 from .revlogutils.flagutil import REVIDX_SIDEDATA
    15 
    18 
    16 from . import (
    19 from . import (
    17     error,
    20     error,
    18     match as matchmod,
    21     match as matchmod,
    19     node,
    22     node,
    20     pathutil,
    23     pathutil,
    21     pycompat,
    24     pycompat,
    22     util,
    25     util,
    23 )
    26 )
       
    27 
       
    28 from .revlogutils import sidedata as sidedatamod
       
    29 
    24 from .utils import stringutil
    30 from .utils import stringutil
    25 
    31 
    26 
    32 
    27 def _findlimit(repo, ctxa, ctxb):
    33 def _findlimit(repo, ctxa, ctxb):
    28     """
    34     """
   953         return subset
   959         return subset
   954     except (ValueError, IndexError):
   960     except (ValueError, IndexError):
   955         # Perhaps someone had chosen the same key name (e.g. "added") and
   961         # Perhaps someone had chosen the same key name (e.g. "added") and
   956         # used different syntax for the value.
   962         # used different syntax for the value.
   957         return None
   963         return None
       
   964 
       
   965 
       
   966 def _getsidedata(srcrepo, rev):
       
   967     ctx = srcrepo[rev]
       
   968     filescopies = computechangesetcopies(ctx)
       
   969     filesadded = computechangesetfilesadded(ctx)
       
   970     filesremoved = computechangesetfilesremoved(ctx)
       
   971     sidedata = {}
       
   972     if any([filescopies, filesadded, filesremoved]):
       
   973         sortedfiles = sorted(ctx.files())
       
   974         p1copies, p2copies = filescopies
       
   975         p1copies = encodecopies(sortedfiles, p1copies)
       
   976         p2copies = encodecopies(sortedfiles, p2copies)
       
   977         filesadded = encodefileindices(sortedfiles, filesadded)
       
   978         filesremoved = encodefileindices(sortedfiles, filesremoved)
       
   979         sidedata[sidedatamod.SD_P1COPIES] = p1copies
       
   980         sidedata[sidedatamod.SD_P2COPIES] = p2copies
       
   981         sidedata[sidedatamod.SD_FILESADDED] = filesadded
       
   982         sidedata[sidedatamod.SD_FILESREMOVED] = filesremoved
       
   983     return sidedata
       
   984 
       
   985 
       
   986 def getsidedataadder(srcrepo, destrepo):
       
   987     def sidedatacompanion(revlog, rev):
       
   988         sidedata = {}
       
   989         if util.safehasattr(revlog, 'filteredrevs'):  # this is a changelog
       
   990             sidedata = _getsidedata(srcrepo, rev)
       
   991         return False, (), sidedata
       
   992 
       
   993     return sidedatacompanion
       
   994 
       
   995 
       
   996 def getsidedataremover(srcrepo, destrepo):
       
   997     def sidedatacompanion(revlog, rev):
       
   998         f = ()
       
   999         if util.safehasattr(revlog, 'filteredrevs'):  # this is a changelog
       
  1000             if revlog.flags(rev) & REVIDX_SIDEDATA:
       
  1001                 f = (
       
  1002                     sidedatamod.SD_P1COPIES,
       
  1003                     sidedatamod.SD_P2COPIES,
       
  1004                     sidedatamod.SD_FILESADDED,
       
  1005                     sidedatamod.SD_FILESREMOVED,
       
  1006                 )
       
  1007         return False, f, {}
       
  1008 
       
  1009     return sidedatacompanion