mercurial/metadata.py
changeset 45669 e53778ad64bf
parent 45668 47ad23549b81
child 45728 232c88dd89e3
equal deleted inserted replaced
45668:47ad23549b81 45669:e53778ad64bf
   683 ACTION_MASK = int("111" "00", 2)
   683 ACTION_MASK = int("111" "00", 2)
   684 # note: untouched file used as copy source will as `000` for this mask.
   684 # note: untouched file used as copy source will as `000` for this mask.
   685 ADDED_FLAG = int("001" "00", 2)
   685 ADDED_FLAG = int("001" "00", 2)
   686 MERGED_FLAG = int("010" "00", 2)
   686 MERGED_FLAG = int("010" "00", 2)
   687 REMOVED_FLAG = int("011" "00", 2)
   687 REMOVED_FLAG = int("011" "00", 2)
   688 # `100` is reserved for future use
   688 SALVAGED_FLAG = int("100" "00", 2)
   689 TOUCHED_FLAG = int("101" "00", 2)
   689 TOUCHED_FLAG = int("101" "00", 2)
   690 
   690 
   691 COPIED_MASK = int("11", 2)
   691 COPIED_MASK = int("11", 2)
   692 COPIED_FROM_P1_FLAG = int("10", 2)
   692 COPIED_FROM_P1_FLAG = int("10", 2)
   693 COPIED_FROM_P2_FLAG = int("11", 2)
   693 COPIED_FROM_P2_FLAG = int("11", 2)
   696 INDEX_HEADER = struct.Struct(">L")
   696 INDEX_HEADER = struct.Struct(">L")
   697 INDEX_ENTRY = struct.Struct(">bLL")
   697 INDEX_ENTRY = struct.Struct(">bLL")
   698 
   698 
   699 
   699 
   700 def encode_files_sidedata(files):
   700 def encode_files_sidedata(files):
   701     all_files = set(files.touched - files.salvaged)
   701     all_files = set(files.touched)
   702     all_files.update(files.copied_from_p1.values())
   702     all_files.update(files.copied_from_p1.values())
   703     all_files.update(files.copied_from_p2.values())
   703     all_files.update(files.copied_from_p2.values())
   704     all_files = sorted(all_files)
   704     all_files = sorted(all_files)
   705     file_idx = {f: i for (i, f) in enumerate(all_files)}
   705     file_idx = {f: i for (i, f) in enumerate(all_files)}
   706     file_idx[None] = 0
   706     file_idx[None] = 0
   716             flag |= ADDED_FLAG
   716             flag |= ADDED_FLAG
   717         elif f in files.merged:
   717         elif f in files.merged:
   718             flag |= MERGED_FLAG
   718             flag |= MERGED_FLAG
   719         elif f in files.removed:
   719         elif f in files.removed:
   720             flag |= REMOVED_FLAG
   720             flag |= REMOVED_FLAG
       
   721         elif f in files.salvaged:
       
   722             flag |= SALVAGED_FLAG
   721         elif f in files.touched:
   723         elif f in files.touched:
   722             flag |= TOUCHED_FLAG
   724             flag |= TOUCHED_FLAG
   723 
   725 
   724         copy = None
   726         copy = None
   725         if f in files.copied_from_p1:
   727         if f in files.copied_from_p1:
   766             md.mark_added(filename)
   768             md.mark_added(filename)
   767         elif flag & ACTION_MASK == MERGED_FLAG:
   769         elif flag & ACTION_MASK == MERGED_FLAG:
   768             md.mark_merged(filename)
   770             md.mark_merged(filename)
   769         elif flag & ACTION_MASK == REMOVED_FLAG:
   771         elif flag & ACTION_MASK == REMOVED_FLAG:
   770             md.mark_removed(filename)
   772             md.mark_removed(filename)
       
   773         elif flag & ACTION_MASK == SALVAGED_FLAG:
       
   774             md.mark_salvaged(filename)
   771         elif flag & ACTION_MASK == TOUCHED_FLAG:
   775         elif flag & ACTION_MASK == TOUCHED_FLAG:
   772             md.mark_touched(filename)
   776             md.mark_touched(filename)
   773 
   777 
   774         copied = None
   778         copied = None
   775         if flag & COPIED_MASK == COPIED_FROM_P1_FLAG:
   779         if flag & COPIED_MASK == COPIED_FROM_P1_FLAG: