@@ -7,10 +7,11 @@ use std::{
77 path:: PathBuf ,
88} ;
99
10- use gix_diff:: blob:: Sink ;
11- use gix_hash:: ObjectId ;
10+ use gix_diff:: blob:: { Platform , Sink } ;
11+ use gix_hash:: { oid , ObjectId } ;
1212use gix_object:: FindExt ;
1313use gix_ref:: bstr:: BStr ;
14+ use gix_traverse:: commit:: Simple ;
1415
1516#[ derive( Clone , Copy , Debug , PartialEq ) ]
1617pub enum Offset {
@@ -661,8 +662,9 @@ fn coalesce_blame_entries(lines_blamed: Vec<BlameEntry>) -> Vec<BlameEntry> {
661662
662663// TODO: do not instantiate anything, get everything passed as argument.
663664pub fn blame_file < T : gix_object:: Find + gix_object:: FindHeader > (
664- odb : T ,
665- start_id : ObjectId ,
665+ odb : & T ,
666+ traverse : & mut Simple < & T , fn ( & oid ) -> bool > ,
667+ resource_cache : & mut Platform ,
666668 worktree_path : PathBuf ,
667669 file_path : & BStr ,
668670) -> Vec < BlameEntry > {
@@ -684,39 +686,6 @@ pub fn blame_file<T: gix_object::Find + gix_object::FindHeader>(
684686 // <---><---><-----><-------><-----><------->
685687 // <---><---><-----><-------><-----><-><-><->
686688
687- let mut traverse = gix_traverse:: commit:: Simple :: new ( Some ( start_id) , & odb) ;
688-
689- let git_dir = worktree_path. join ( ".git" ) ;
690- let index = gix_index:: File :: at ( git_dir. join ( "index" ) , gix_hash:: Kind :: Sha1 , false , Default :: default ( ) ) . unwrap ( ) ;
691- let stack = gix_worktree:: Stack :: from_state_and_ignore_case (
692- worktree_path. clone ( ) ,
693- false ,
694- gix_worktree:: stack:: State :: AttributesAndIgnoreStack {
695- attributes : Default :: default ( ) ,
696- ignore : Default :: default ( ) ,
697- } ,
698- & index,
699- index. path_backing ( ) ,
700- ) ;
701- let capabilities = gix_fs:: Capabilities :: probe ( & git_dir) ;
702- let mut resource_cache = gix_diff:: blob:: Platform :: new (
703- Default :: default ( ) ,
704- gix_diff:: blob:: Pipeline :: new (
705- gix_diff:: blob:: pipeline:: WorktreeRoots {
706- old_root : None ,
707- new_root : None ,
708- } ,
709- gix_filter:: Pipeline :: new ( Default :: default ( ) , Default :: default ( ) ) ,
710- vec ! [ ] ,
711- gix_diff:: blob:: pipeline:: Options {
712- large_file_threshold_bytes : 0 ,
713- fs : capabilities,
714- } ,
715- ) ,
716- gix_diff:: blob:: pipeline:: Mode :: ToGit ,
717- stack,
718- ) ;
719-
720689 // Needed for `to_str`.
721690 use gix_object:: bstr:: ByteSlice ;
722691
0 commit comments