Skip to content

Commit 16a248b

Browse files
authored
Merge pull request #1854 from GitoxideLabs/montly-report
montly report
2 parents 2efce72 + d28ff1b commit 16a248b

File tree

136 files changed

+309
-270
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+309
-270
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ bin-dir = "gitoxide-max-pure-v{ version }-{ target }/{ bin }{ binary-ext }"
325325
pedantic = { level = "warn", priority = -1 }
326326
#
327327
# Reviewed and allowed lints
328+
needless_continue = "allow"
328329
enum_glob_use = "allow" # x97
329330
missing_errors_doc = "allow" # x1792
330331
missing_panics_doc = "allow" # x447

deny.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
# More documentation for the advisories section can be found here:
99
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
1010
[advisories]
11-
ignore = []
11+
ignore = ['RUSTSEC-2025-0007']
1212

1313

1414

etc/reports/25-02.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
Like the previous month was the first in 2025 with plenty of news to share, this month is a first as well: I seem to have nothing to write about.
2+
3+
Sure, there were a couple of smaller API improvements, but nothing that would inspire me.
4+
So what did I do all this time? Probably this is the moment where there really is no other way but to talk about GitButler, something I avoided last month just because it doesn't seem to belong into the `gitoxide` newsletter.
5+
6+
## GitButler
7+
8+
[GitButler](https://gitbutler.com) is what I have been working on intensely for the last two months effectively, in a push to help it to unfold its true potential. Thus far it was mostly powered by `git2`, with `gitoxide` sprinkled in there, but the next iteration will be the inverse with `git2` only being used where `gitoxide` is lacking a feature. That way, along with massive architectural changes, it will be able to cope with large repositories and be more compatible with various Git features, too.
9+
10+
I cannot wait to see all this work to finally come to fruition, and of course, to also see myself being pulled to a user interface that truly elevates my workflow and the workflow of other devs just like me who thus far preferred to stay on the command-line.
11+
12+
## Community
13+
14+
### Faster `gix blame`
15+
16+
Christoph Rüßler kept working and managed to greatly improve the `gix blame` performance while increasing its conformance to Git at the same time. This means that now, depending on the sample, `gix blame` *can* be a bit faster than Git, but it typically is still up to 30% slower when commitgraph caches are used. Overall though, the performance is nothing to sneeze at, and it competes quite well except for in pathological cases.
17+
Admittedly, I am quite blown away by the performance and have a feeling that last time I checked, I didn't use the latest version of the `gix` binary.
18+
It's worth noting that rename-tracking still isn't support, but I also see no reason why it shouldn't be eventually, a feature that would make `gix blame` so much more useful in practice.
19+
20+
### `gix blame` with experimental cache
21+
22+
A pretty [slim PR](https://github.com/GitoxideLabs/gitoxide/pull/1852) shows how to use a special cache to greatly speedup blames, from ~300ms down to just ~4ms, a massive 75x speedup that would be very useful for editors and IDEs, or forges, I am sure!
23+
Of course, one first has to build such cache, and probably do so per file, but I am sure there are plenty of use-cases for it when it's driven by dev tooling.
24+
25+
### Gix in Cargo
26+
27+
With `gix status` now available I am planning to integrate it as soon as possible! That didn't happen yet, but… it will, the stack to work off before I can start this is pretty high though so it's unlikely to happen anytime soon.
28+
29+
Cheers
30+
Sebastian
31+
32+
PS: The latest timesheets can be found [here (2025)](https://github.com/Byron/byron/blob/main/timesheets/2025.csv).

gitoxide-core/src/hours/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ where
180180
break;
181181
}
182182
Err(err) => return Err(err.into()),
183-
};
183+
}
184184
}
185185
if let Some(tx) = tx_tree_id {
186186
tx.send(chunk).ok();

gitoxide-core/src/index/information.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,16 @@ mod serde_only {
9292
});
9393
if f.link().is_some() {
9494
names.push("link");
95-
};
95+
}
9696
if f.resolve_undo().is_some() {
9797
names.push("resolve-undo (REUC)");
98-
};
98+
}
9999
if f.untracked().is_some() {
100100
names.push("untracked (UNTR)");
101-
};
101+
}
102102
if f.fs_monitor().is_some() {
103103
names.push("fs-monitor (FSMN)");
104-
};
104+
}
105105
if f.had_offset_table() {
106106
names.push("offset-table (IEOT)");
107107
}

gitoxide-core/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub use discover::discover;
8686
pub fn env(mut out: impl std::io::Write, format: OutputFormat) -> anyhow::Result<()> {
8787
if format != OutputFormat::Human {
8888
bail!("JSON output isn't supported");
89-
};
89+
}
9090

9191
let width = 15;
9292
writeln!(

gitoxide-core/src/pack/explode.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ pub fn pack_or_pack_index(
161161
)
162162
})?;
163163

164-
if !object_path.as_ref().map_or(true, |p| p.as_ref().is_dir()) {
164+
if !object_path.as_ref().is_none_or(|p| p.as_ref().is_dir()) {
165165
return Err(anyhow!(
166166
"The object directory at '{}' is inaccessible",
167167
object_path

gitoxide-core/src/pack/index.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ pub fn from_pack(
114114
OutputFormat::Human => drop(human_output(out, res)),
115115
#[cfg(feature = "serde")]
116116
OutputFormat::Json => serde_json::to_writer_pretty(out, &res)?,
117-
};
117+
}
118118
Ok(())
119119
}
120120

gitoxide-core/src/pack/receive.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,6 @@ fn receive_pack_blocking(
306306
OutputFormat::Json => {
307307
serde_json::to_writer_pretty(&mut out, &JsonOutcome::from_outcome_and_refs(outcome, refs))?;
308308
}
309-
};
309+
}
310310
Ok(())
311311
}

gitoxide-core/src/pack/verify.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ where
177177
#[cfg(feature = "serde")]
178178
Some(OutputFormat::Json) => serde_json::to_writer_pretty(out, &multi_index.index_names().iter().zip(res.pack_traverse_statistics).collect::<Vec<_>>())?,
179179
_ => {}
180-
};
180+
}
181181
return Ok(())
182182
},
183183
_ => return Err(anyhow!(
@@ -195,7 +195,7 @@ where
195195
#[cfg(feature = "serde")]
196196
Some(OutputFormat::Json) => serde_json::to_writer_pretty(out, stats)?,
197197
_ => {}
198-
};
198+
}
199199
}
200200
Ok(())
201201
}

0 commit comments

Comments
 (0)