@@ -12,6 +12,7 @@ use crate::{
1212} ;
1313use gix_features:: threading:: OwnShared ;
1414use gix_object:: bstr:: ByteSlice ;
15+ use gix_path:: relative_path:: RelativePath ;
1516use std:: ffi:: OsStr ;
1617use std:: { borrow:: Cow , path:: PathBuf } ;
1718
@@ -345,23 +346,30 @@ impl ThreadSafeRepository {
345346
346347 refs. write_reflog = config:: cache:: util:: reflog_or_default ( config. reflog , worktree_dir. is_some ( ) ) ;
347348 refs. namespace . clone_from ( & config. refs_namespace ) ;
348- let replacements = replacement_objects_refs_prefix ( & config. resolved , lenient_config, filter_config_section) ?
349- . and_then ( |prefix| {
350- let _span = gix_trace:: detail!( "find replacement objects" ) ;
351- let platform = refs. iter ( ) . ok ( ) ?;
352- let iter = platform. prefixed ( prefix. as_bstr ( ) . try_into ( ) . ok ( ) ?) . ok ( ) ?;
353- let replacements = iter
354- . filter_map ( Result :: ok)
355- . filter_map ( |r : gix_ref:: Reference | {
356- let target = r. target . try_id ( ) ?. to_owned ( ) ;
357- let source =
358- gix_hash:: ObjectId :: from_hex ( r. name . as_bstr ( ) . strip_prefix ( prefix. as_slice ( ) ) ?) . ok ( ) ?;
359- Some ( ( source, target) )
360- } )
361- . collect :: < Vec < _ > > ( ) ;
362- Some ( replacements)
363- } )
364- . unwrap_or_default ( ) ;
349+ let prefix = replacement_objects_refs_prefix ( & config. resolved , lenient_config, filter_config_section) ?;
350+ let replacements = match prefix {
351+ Some ( prefix) => {
352+ let prefix: & RelativePath = prefix. as_bstr ( ) . try_into ( ) ?;
353+
354+ Some ( prefix) . and_then ( |prefix| {
355+ let _span = gix_trace:: detail!( "find replacement objects" ) ;
356+ let platform = refs. iter ( ) . ok ( ) ?;
357+ let iter = platform. prefixed ( prefix) . ok ( ) ?;
358+ let replacements = iter
359+ . filter_map ( Result :: ok)
360+ . filter_map ( |r : gix_ref:: Reference | {
361+ let target = r. target . try_id ( ) ?. to_owned ( ) ;
362+ let source =
363+ gix_hash:: ObjectId :: from_hex ( r. name . as_bstr ( ) . strip_prefix ( prefix. as_ref ( ) ) ?) . ok ( ) ?;
364+ Some ( ( source, target) )
365+ } )
366+ . collect :: < Vec < _ > > ( ) ;
367+ Some ( replacements)
368+ } )
369+ }
370+ None => None ,
371+ } ;
372+ let replacements = replacements. unwrap_or_default ( ) ;
365373
366374 Ok ( ThreadSafeRepository {
367375 objects : OwnShared :: new ( gix_odb:: Store :: at_opts (
0 commit comments