comparison mercurial/metadata.py @ 45669:e53778ad64bf

salvaged: persist the salvaged set on disk With the new side data storage, this is trivial. Differential Revision: https://phab.mercurial-scm.org/D9129
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 15 Sep 2020 10:55:17 +0200
parents 47ad23549b81
children 232c88dd89e3
comparison
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: