Mercurial > hg
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: |