@@ -748,102 +748,6 @@ fn tree_diff_with_rewrites_at_file_path(
748748}
749749
750750#[ allow( clippy:: too_many_arguments) ]
751- #[ cfg( not( feature = "blob-experimental" ) ) ]
752- fn blob_changes (
753- odb : impl gix_object:: Find + gix_object:: FindHeader ,
754- resource_cache : & mut gix_diff:: blob:: Platform ,
755- oid : ObjectId ,
756- previous_oid : ObjectId ,
757- file_path : & BStr ,
758- previous_file_path : & BStr ,
759- diff_algorithm : gix_diff:: blob:: Algorithm ,
760- stats : & mut Statistics ,
761- ) -> Result < Vec < Change > , Error > {
762- use std:: ops:: Range ;
763-
764- /// Record all [`Change`]s to learn about additions, deletions and unchanged portions of a *Source File*.
765- struct ChangeRecorder {
766- last_seen_after_end : u32 ,
767- hunks : Vec < Change > ,
768- total_number_of_lines : u32 ,
769- }
770-
771- impl ChangeRecorder {
772- /// `total_number_of_lines` is used to fill in the last unchanged hunk if needed
773- /// so that the entire file is represented by [`Change`].
774- fn new ( total_number_of_lines : u32 ) -> Self {
775- ChangeRecorder {
776- last_seen_after_end : 0 ,
777- hunks : Vec :: new ( ) ,
778- total_number_of_lines,
779- }
780- }
781- }
782-
783- impl gix_diff:: blob:: Sink for ChangeRecorder {
784- type Out = Vec < Change > ;
785-
786- fn process_change ( & mut self , before : Range < u32 > , after : Range < u32 > ) {
787- // This checks for unchanged hunks.
788- if after. start > self . last_seen_after_end {
789- self . hunks
790- . push ( Change :: Unchanged ( self . last_seen_after_end ..after. start ) ) ;
791- }
792-
793- match ( !before. is_empty ( ) , !after. is_empty ( ) ) {
794- ( _, true ) => {
795- self . hunks . push ( Change :: AddedOrReplaced (
796- after. start ..after. end ,
797- before. end - before. start ,
798- ) ) ;
799- }
800- ( true , false ) => {
801- self . hunks . push ( Change :: Deleted ( after. start , before. end - before. start ) ) ;
802- }
803- ( false , false ) => unreachable ! ( "BUG: imara-diff provided a non-change" ) ,
804- }
805- self . last_seen_after_end = after. end ;
806- }
807-
808- fn finish ( mut self ) -> Self :: Out {
809- if self . total_number_of_lines > self . last_seen_after_end {
810- self . hunks
811- . push ( Change :: Unchanged ( self . last_seen_after_end ..self . total_number_of_lines ) ) ;
812- }
813- self . hunks
814- }
815- }
816-
817- resource_cache. set_resource (
818- previous_oid,
819- gix_object:: tree:: EntryKind :: Blob ,
820- previous_file_path,
821- gix_diff:: blob:: ResourceKind :: OldOrSource ,
822- & odb,
823- ) ?;
824- resource_cache. set_resource (
825- oid,
826- gix_object:: tree:: EntryKind :: Blob ,
827- file_path,
828- gix_diff:: blob:: ResourceKind :: NewOrDestination ,
829- & odb,
830- ) ?;
831-
832- let outcome = resource_cache. prepare_diff ( ) ?;
833- let input = gix_diff:: blob:: intern:: InternedInput :: new (
834- tokens_for_diffing ( outcome. old . data . as_slice ( ) . unwrap_or_default ( ) ) ,
835- tokens_for_diffing ( outcome. new . data . as_slice ( ) . unwrap_or_default ( ) ) ,
836- ) ;
837- let number_of_lines_in_destination = input. after . len ( ) ;
838- let change_recorder = ChangeRecorder :: new ( number_of_lines_in_destination as u32 ) ;
839-
840- let res = gix_diff:: blob:: diff ( diff_algorithm, & input, change_recorder) ;
841- stats. blobs_diffed += 1 ;
842- Ok ( res)
843- }
844-
845- #[ allow( clippy:: too_many_arguments) ]
846- #[ cfg( feature = "blob-experimental" ) ]
847751fn blob_changes (
848752 odb : impl gix_object:: Find + gix_object:: FindHeader ,
849753 resource_cache : & mut gix_diff:: blob:: Platform ,
0 commit comments