Skip to content

Commit 080f495

Browse files
committed
feat: Add blob::pipeline::WorktreeRoots::is_unset()
That way it's easy to determine if a worktree root has any root set.
1 parent 1d3d258 commit 080f495

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

gix-diff/src/blob/pipeline.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pub struct WorktreeRoots {
2222
pub new_root: Option<PathBuf>,
2323
}
2424

25+
/// Access
2526
impl WorktreeRoots {
2627
/// Return the root path for the given `kind`
2728
pub fn by_kind(&self, kind: ResourceKind) -> Option<&Path> {
@@ -30,6 +31,11 @@ impl WorktreeRoots {
3031
ResourceKind::NewOrDestination => self.new_root.as_deref(),
3132
}
3233
}
34+
35+
/// Return `true` if all worktree roots are unset.
36+
pub fn is_unset(&self) -> bool {
37+
self.new_root.is_none() && self.old_root.is_none()
38+
}
3339
}
3440

3541
/// Data as part of an [Outcome].
@@ -184,6 +190,8 @@ impl Pipeline {
184190
/// Access
185191
impl Pipeline {
186192
/// Return all drivers that this instance was initialized with.
193+
///
194+
/// They are sorted by [`name`](Driver::name) to support binary searches.
187195
pub fn drivers(&self) -> &[super::Driver] {
188196
&self.drivers
189197
}
@@ -445,7 +453,7 @@ impl Pipeline {
445453
}
446454
}
447455
.map_err(|err| {
448-
convert_to_diffable::Error::CreateTempfile {
456+
convert_to_diffable::Error::StreamCopy {
449457
source: err,
450458
rela_path: rela_path.to_owned(),
451459
}
@@ -533,6 +541,10 @@ impl Driver {
533541
pub fn prepare_binary_to_text_cmd(&self, path: &Path) -> Option<std::process::Command> {
534542
let command: &BStr = self.binary_to_text_command.as_ref()?.as_ref();
535543
let cmd = gix_command::prepare(gix_path::from_bstr(command).into_owned())
544+
// This program intentionally doesn't get the whole Git context.
545+
// In fact, when checked it only saw the `GIT_EXEC_PATH` and `COLORTERM` environment variables, nothing more.
546+
// We by default let it inherit the entire environment. On Windows, Git seems to add the env though.
547+
.with_context(Default::default())
536548
.with_shell()
537549
.stdin(Stdio::null())
538550
.stdout(Stdio::piped())

0 commit comments

Comments
 (0)