Skip to content

Commit 802ca15

Browse files
committed
fix!: prefer to receive borrowed gix_command::Context when it's just passed on.
That way, the clone occours only when needed, without forcing the caller to pre-emptively clone each time it's called.
1 parent 7a5447c commit 802ca15

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

gix-merge/src/blob/platform/merge.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -374,15 +374,15 @@ impl<'parent> PlatformRef<'parent> {
374374
&self,
375375
out: &mut Vec<u8>,
376376
labels: builtin_driver::text::Labels<'_>,
377-
context: gix_command::Context,
377+
context: &gix_command::Context,
378378
) -> Result<(inner::builtin_merge::Pick, Resolution), Error> {
379379
let _span = gix_trace::coarse!(
380380
"gix_merge::blob::PlatformRef::merge()",
381381
current_rela_path = %self.current.rela_path
382382
);
383383
match self.configured_driver() {
384384
Ok(driver) => {
385-
let mut cmd = self.prepare_external_driver(driver.command.clone(), labels, context)?;
385+
let mut cmd = self.prepare_external_driver(driver.command.clone(), labels, context.clone())?;
386386
let status = cmd.status().map_err(|err| Error::SpawnExternalDriver {
387387
cmd: format!("{:?}", cmd.cmd),
388388
source: err,

gix-merge/tests/merge/blob/platform.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@ mod merge {
4646
);
4747

4848
let mut buf = Vec::new();
49-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
49+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
5050
assert_eq!(
5151
res,
5252
(Pick::Ours, Resolution::Conflict),
5353
"it detected the binary buffer, ran the binary merge with default conflict resolution"
5454
);
5555

5656
platform_ref.options.resolve_binary_with = Some(builtin_driver::binary::ResolveWith::Theirs);
57-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
57+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
5858
assert_eq!(
5959
res,
6060
(Pick::Theirs, Resolution::Complete),
@@ -86,7 +86,7 @@ mod merge {
8686
let mut platform_ref = platform.prepare_merge(&db, Default::default())?;
8787
assert_eq!(platform_ref.driver, DriverChoice::BuiltIn(BuiltinDriver::Text));
8888
let mut buf = Vec::new();
89-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
89+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
9090
assert_eq!(res, (Pick::Buffer, Resolution::Conflict));
9191
assert_eq!(
9292
buf.as_bstr(),
@@ -102,7 +102,7 @@ theirs
102102
style: ConflictStyle::Diff3,
103103
marker_size: 3,
104104
};
105-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
105+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
106106
assert_eq!(res, (Pick::Buffer, Resolution::Conflict));
107107

108108
assert_eq!(
@@ -119,7 +119,7 @@ theirs
119119
);
120120

121121
platform_ref.options.text.conflict = builtin_driver::text::Conflict::ResolveWithOurs;
122-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
122+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
123123
assert_eq!(
124124
res,
125125
(Pick::Buffer, Resolution::Complete),
@@ -128,23 +128,23 @@ theirs
128128
assert_eq!(buf.as_bstr(), "ours");
129129

130130
platform_ref.options.text.conflict = builtin_driver::text::Conflict::ResolveWithTheirs;
131-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
131+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
132132
assert_eq!(res, (Pick::Buffer, Resolution::Complete));
133133
assert_eq!(buf.as_bstr(), "theirs");
134134

135135
platform_ref.options.text.conflict = builtin_driver::text::Conflict::ResolveWithUnion;
136-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
136+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
137137
assert_eq!(res, (Pick::Buffer, Resolution::Complete));
138138
assert_eq!(buf.as_bstr(), "ours\ntheirs");
139139

140140
platform_ref.driver = DriverChoice::BuiltIn(BuiltinDriver::Union);
141141
platform_ref.options.text.conflict = builtin_driver::text::Conflict::default();
142-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
142+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
143143
assert_eq!(res, (Pick::Buffer, Resolution::Complete));
144144
assert_eq!(buf.as_bstr(), "ours\ntheirs");
145145

146146
platform_ref.driver = DriverChoice::BuiltIn(BuiltinDriver::Binary);
147-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
147+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
148148
assert_eq!(
149149
res,
150150
(Pick::Ours, Resolution::Conflict),
@@ -163,7 +163,7 @@ theirs
163163
("b\n", Pick::Ancestor, builtin_driver::binary::ResolveWith::Ancestor),
164164
] {
165165
platform_ref.options.resolve_binary_with = Some(resolve);
166-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
166+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
167167
assert_eq!(res, (expected_pick, Resolution::Complete));
168168
assert_eq!(platform_ref.buffer_by_pick(res.0).unwrap().as_bstr(), expected);
169169
}
@@ -202,7 +202,7 @@ theirs
202202

203203
let platform_ref = platform.prepare_merge(&db, Default::default())?;
204204
let mut buf = Vec::new();
205-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
205+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
206206
assert_eq!(res, (Pick::Buffer, Resolution::Complete), "merge drivers always merge ");
207207
let mut lines = cleaned_driver_lines(&buf)?;
208208
for tmp_file in lines.by_ref().take(3) {
@@ -228,7 +228,7 @@ theirs
228228
let id = db.insert("binary\0");
229229
platform.set_resource(id, EntryKind::Blob, "b".into(), ResourceKind::OtherOrTheirs, &db)?;
230230
let platform_ref = platform.prepare_merge(&db, Default::default())?;
231-
let res = platform_ref.merge(&mut buf, default_labels(), Default::default())?;
231+
let res = platform_ref.merge(&mut buf, default_labels(), &Default::default())?;
232232
assert_eq!(
233233
res,
234234
(Pick::Buffer, Resolution::Complete),
@@ -282,7 +282,7 @@ theirs
282282
let platform_ref = platform.prepare_merge(&gix_object::find::Never, Default::default())?;
283283

284284
let mut buf = Vec::new();
285-
let res = platform_ref.merge(&mut buf, Default::default(), Default::default())?;
285+
let res = platform_ref.merge(&mut buf, Default::default(), &Default::default())?;
286286
assert_eq!(
287287
res,
288288
(Pick::Buffer, Resolution::Complete),
@@ -359,7 +359,7 @@ theirs
359359

360360
let mut out = Vec::new();
361361
let err = platform_ref
362-
.merge(&mut out, Default::default(), Default::default())
362+
.merge(&mut out, Default::default(), &Default::default())
363363
.unwrap_err();
364364
assert!(matches!(err, platform::merge::Error::ResourceTooLarge));
365365

0 commit comments

Comments
 (0)