diff --git a/gitoxide-core/src/query/engine/command.rs b/gitoxide-core/src/query/engine/command.rs index dba827db4d6..6245d5472b1 100644 --- a/gitoxide-core/src/query/engine/command.rs +++ b/gitoxide-core/src/query/engine/command.rs @@ -26,6 +26,8 @@ impl query::Engine { Some(spec.to_bstring()), false, &gix::index::State::new(self.repo.object_hash()), + gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping + .adjust_for_bare(self.repo.is_bare()), )? .search() .patterns() diff --git a/gitoxide-core/src/repository/attributes/query.rs b/gitoxide-core/src/repository/attributes/query.rs index ec777183ee7..f1a719e9173 100644 --- a/gitoxide-core/src/repository/attributes/query.rs +++ b/gitoxide-core/src/repository/attributes/query.rs @@ -46,7 +46,13 @@ pub(crate) mod function { } } PathsOrPatterns::Patterns(patterns) => { - let mut pathspec = repo.pathspec(patterns, true, &index)?; + let mut pathspec = repo.pathspec( + patterns, + true, + &index, + gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping + .adjust_for_bare(repo.is_bare()), + )?; for (path, _entry) in pathspec .index_entries_with_paths(&index) .ok_or_else(|| anyhow!("Pathspec didn't match a single path in the index"))? diff --git a/gitoxide-core/src/repository/exclude.rs b/gitoxide-core/src/repository/exclude.rs index 2eadc3eb4d1..a7f538e188e 100644 --- a/gitoxide-core/src/repository/exclude.rs +++ b/gitoxide-core/src/repository/exclude.rs @@ -56,7 +56,13 @@ pub fn query( } PathsOrPatterns::Patterns(patterns) => { for (path, _entry) in repo - .pathspec(patterns.into_iter(), repo.work_dir().is_some(), &index)? + .pathspec( + patterns.into_iter(), + repo.work_dir().is_some(), + &index, + gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping + .adjust_for_bare(repo.is_bare()), + )? .index_entries_with_paths(&index) .ok_or_else(|| anyhow!("Pathspec didn't yield any entry"))? { diff --git a/gitoxide-core/src/repository/index/entries.rs b/gitoxide-core/src/repository/index/entries.rs index 9a0a2825d0d..4830708b280 100644 --- a/gitoxide-core/src/repository/index/entries.rs +++ b/gitoxide-core/src/repository/index/entries.rs @@ -41,7 +41,12 @@ pub(crate) mod function { ) -> anyhow::Result<()> { use crate::OutputFormat::*; let index = repo.index_or_load_from_head()?; - let pathspec = repo.pathspec(pathspecs, false, &index)?; + let pathspec = repo.pathspec( + pathspecs, + false, + &index, + gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping.adjust_for_bare(repo.is_bare()), + )?; let mut cache = attributes .or_else(|| { pathspec @@ -55,21 +60,15 @@ pub(crate) mod function { &index, match attrs { Attributes::WorktreeAndIndex => { - if repo.is_bare() { - gix::worktree::stack::state::attributes::Source::IdMapping - } else { - gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping - } + gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping + .adjust_for_bare(repo.is_bare()) } Attributes::Index => gix::worktree::stack::state::attributes::Source::IdMapping, }, match attrs { Attributes::WorktreeAndIndex => { - if repo.is_bare() { - gix::worktree::stack::state::ignore::Source::IdMapping - } else { - gix::worktree::stack::state::ignore::Source::WorktreeThenIdMappingIfNotSkipped - } + gix::worktree::stack::state::ignore::Source::WorktreeThenIdMappingIfNotSkipped + .adjust_for_bare(repo.is_bare()) } Attributes::Index => gix::worktree::stack::state::ignore::Source::IdMapping, }, diff --git a/gix/src/worktree/mod.rs b/gix/src/worktree/mod.rs index 6e27b2e034c..c5c4c430032 100644 --- a/gix/src/worktree/mod.rs +++ b/gix/src/worktree/mod.rs @@ -225,7 +225,7 @@ pub mod pathspec { patterns, inherit_ignore_case, &index, - gix_worktree::cache::state::attributes::Source::WorktreeThenIdMapping, + gix_worktree::stack::state::attributes::Source::WorktreeThenIdMapping, )?) } }