Skip to content

Commit e3dfa12

Browse files
committed
nicer printing of index verification results (#279)
1 parent bb35c69 commit e3dfa12

File tree

3 files changed

+34
-23
lines changed

3 files changed

+34
-23
lines changed

Diff for: git-pack/src/index/traverse/indexed.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,14 @@ impl index::File {
3838
{
3939
let (verify_result, traversal_result) = parallel::join(
4040
{
41-
let pack_progress = progress.add_child("SHA1 of pack");
42-
let index_progress = progress.add_child("SHA1 of index");
41+
let pack_progress = progress.add_child(format!(
42+
"Hash of pack '{}'",
43+
pack.path().file_name().expect("pack has filename").to_string_lossy()
44+
));
45+
let index_progress = progress.add_child(format!(
46+
"Hash of index '{}'",
47+
self.path.file_name().expect("index has filename").to_string_lossy()
48+
));
4349
move || {
4450
let res = self.possibly_verify(pack, check, pack_progress, index_progress, should_interrupt);
4551
if res.is_err() {

Diff for: git-pack/src/index/traverse/with_lookup.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,14 @@ impl index::File {
6060
{
6161
let (verify_result, traversal_result) = parallel::join(
6262
{
63-
let pack_progress = progress.add_child("SHA1 of pack");
64-
let index_progress = progress.add_child("SHA1 of index");
63+
let pack_progress = progress.add_child(format!(
64+
"Hash of pack '{}'",
65+
pack.path().file_name().expect("pack has filename").to_string_lossy()
66+
));
67+
let index_progress = progress.add_child(format!(
68+
"Hash of index '{}'",
69+
self.path.file_name().expect("index has filename").to_string_lossy()
70+
));
6571
move || {
6672
let res = self.possibly_verify(pack, check, pack_progress, index_progress, should_interrupt);
6773
if res.is_err() {

Diff for: gitoxide-core/src/pack/verify.rs

+18-19
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::{io, path::Path, str::FromStr, sync::atomic::AtomicBool};
22

33
use anyhow::{anyhow, Context as AnyhowContext, Result};
44
use bytesize::ByteSize;
5-
use git_pack_for_configuration_only::index::traverse::Outcome;
65
use git_repository as git;
76
use git_repository::{
87
easy::object,
@@ -176,9 +175,17 @@ where
176175
Some(file_name) if file_name == "multi-pack-index" => {
177176
let multi_index = git::odb::pack::multi_index::File::at(path)?;
178177
let res = multi_index.verify_integrity(mode, algorithm.into(), cache, thread_limit, progress, should_interrupt)?;
179-
for stats in res.pack_traverse_outcomes {
180-
output_outcome(&mut out, output_statistics, &stats)?;
181-
}
178+
match output_statistics {
179+
Some(OutputFormat::Human) => {
180+
for (index_name, stats) in multi_index.index_names().iter().zip(res.pack_traverse_outcomes) {
181+
writeln!(out, "{}", index_name.display()).ok();
182+
drop(print_statistics(&mut out, &stats));
183+
}
184+
},
185+
#[cfg(feature = "serde1")]
186+
Some(OutputFormat::Json) => serde_json::to_writer_pretty(out, &multi_index.index_names().iter().zip(res.pack_traverse_outcomes).collect::<Vec<_>>())?,
187+
_ => {}
188+
};
182189
return Ok(())
183190
},
184191
_ => return Err(anyhow!(
@@ -190,25 +197,17 @@ where
190197
ext => return Err(anyhow!("Unknown extension {:?}, expecting 'idx' or 'pack'", ext)),
191198
};
192199
if let Some(stats) = res.1.as_ref() {
193-
output_outcome(&mut out, output_statistics, stats)?;
200+
#[cfg_attr(not(feature = "serde1"), allow(clippy::single_match))]
201+
match output_statistics {
202+
Some(OutputFormat::Human) => drop(print_statistics(&mut out, stats)),
203+
#[cfg(feature = "serde1")]
204+
Some(OutputFormat::Json) => serde_json::to_writer_pretty(out, stats)?,
205+
_ => {}
206+
};
194207
}
195208
Ok(())
196209
}
197210

198-
fn output_outcome<W1>(mut out: &mut W1, output_statistics: Option<OutputFormat>, stats: &Outcome) -> anyhow::Result<()>
199-
where
200-
W1: io::Write,
201-
{
202-
#[cfg_attr(not(feature = "serde1"), allow(clippy::single_match))]
203-
match output_statistics {
204-
Some(OutputFormat::Human) => drop(print_statistics(&mut out, stats)),
205-
#[cfg(feature = "serde1")]
206-
Some(OutputFormat::Json) => serde_json::to_writer_pretty(out, stats)?,
207-
_ => {}
208-
};
209-
Ok(())
210-
}
211-
212211
fn print_statistics(out: &mut impl io::Write, stats: &index::traverse::Outcome) -> io::Result<()> {
213212
writeln!(out, "objects per delta chain length")?;
214213
let mut chain_length_to_object: Vec<_> = stats.objects_per_chain_length.iter().map(|(a, b)| (*a, *b)).collect();

0 commit comments

Comments
 (0)