equal
deleted
inserted
replaced
19 use crate::dirstate::SIZE_NON_NORMAL; |
19 use crate::dirstate::SIZE_NON_NORMAL; |
20 use crate::matchers::Matcher; |
20 use crate::matchers::Matcher; |
21 use crate::utils::hg_path::{HgPath, HgPathBuf}; |
21 use crate::utils::hg_path::{HgPath, HgPathBuf}; |
22 use crate::DirstateEntry; |
22 use crate::DirstateEntry; |
23 use crate::DirstateError; |
23 use crate::DirstateError; |
|
24 use crate::DirstateMapError; |
24 use crate::DirstateParents; |
25 use crate::DirstateParents; |
25 use crate::DirstateStatus; |
26 use crate::DirstateStatus; |
26 use crate::EntryState; |
27 use crate::EntryState; |
27 use crate::FastHashbrownMap as FastHashMap; |
28 use crate::FastHashbrownMap as FastHashMap; |
28 use crate::PatternFileWarning; |
29 use crate::PatternFileWarning; |
758 }, |
759 }, |
759 )?; |
760 )?; |
760 if !had_entry { |
761 if !had_entry { |
761 self.nodes_with_entry_count += 1 |
762 self.nodes_with_entry_count += 1 |
762 } |
763 } |
|
764 node.data = NodeData::Entry(new_entry); |
|
765 Ok(()) |
|
766 } |
|
767 |
|
768 fn set_clean( |
|
769 &mut self, |
|
770 filename: &HgPath, |
|
771 old_entry: DirstateEntry, |
|
772 mode: u32, |
|
773 size: u32, |
|
774 mtime: TruncatedTimestamp, |
|
775 ) -> Result<(), DirstateError> { |
|
776 let node = Self::get_or_insert_node( |
|
777 self.on_disk, |
|
778 &mut self.unreachable_bytes, |
|
779 &mut self.root, |
|
780 filename, |
|
781 WithBasename::to_cow_owned, |
|
782 |ancestor| { |
|
783 if !old_entry.tracked() { |
|
784 ancestor.tracked_descendants_count += 1; |
|
785 } |
|
786 }, |
|
787 )?; |
|
788 let mut new_entry = old_entry.clone(); |
|
789 new_entry.set_clean(mode, size, mtime); |
763 node.data = NodeData::Entry(new_entry); |
790 node.data = NodeData::Entry(new_entry); |
764 Ok(()) |
791 Ok(()) |
765 } |
792 } |
766 |
793 |
767 fn iter_nodes<'tree>( |
794 fn iter_nodes<'tree>( |
877 &mut self, |
904 &mut self, |
878 filename: &HgPath, |
905 filename: &HgPath, |
879 ) -> Result<bool, DirstateV2ParseError> { |
906 ) -> Result<bool, DirstateV2ParseError> { |
880 let old_entry_opt = self.get(filename)?; |
907 let old_entry_opt = self.get(filename)?; |
881 self.with_dmap_mut(|map| map.set_tracked(filename, old_entry_opt)) |
908 self.with_dmap_mut(|map| map.set_tracked(filename, old_entry_opt)) |
|
909 } |
|
910 |
|
911 pub fn set_clean( |
|
912 &mut self, |
|
913 filename: &HgPath, |
|
914 mode: u32, |
|
915 size: u32, |
|
916 mtime: TruncatedTimestamp, |
|
917 ) -> Result<(), DirstateError> { |
|
918 let old_entry = match self.get(filename)? { |
|
919 None => { |
|
920 return Err( |
|
921 DirstateMapError::PathNotFound(filename.into()).into() |
|
922 ) |
|
923 } |
|
924 Some(e) => e, |
|
925 }; |
|
926 self.copy_map_remove(filename)?; |
|
927 self.with_dmap_mut(|map| { |
|
928 map.set_clean(filename, old_entry, mode, size, mtime) |
|
929 }) |
882 } |
930 } |
883 |
931 |
884 pub fn reset_state( |
932 pub fn reset_state( |
885 &mut self, |
933 &mut self, |
886 filename: &HgPath, |
934 filename: &HgPath, |