Skip to content

Commit 6794300

Browse files
committed
Allow for more screen space when formatting
1 parent 74bcbb5 commit 6794300

File tree

25 files changed

+145
-400
lines changed

25 files changed

+145
-400
lines changed

demos/git-count.rs

+1-8
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,7 @@ fn run() -> Result<()> {
4444
.par_iter()
4545
.fold(
4646
|| (0, 0, 0, 0, 0),
47-
|(mut deltas, mut commits, mut trees, mut blobs, mut tags): (
48-
u32,
49-
u32,
50-
u32,
51-
u32,
52-
u32,
53-
),
54-
entry| {
47+
|(mut deltas, mut commits, mut trees, mut blobs, mut tags): (u32, u32, u32, u32, u32), entry| {
5548
match pack.entry(entry.pack_offset).header {
5649
Commit => commits += 1,
5750
Tag => tags += 1,

git-features/src/parallel.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ mod serial {
1010
use crate::parallel::Reducer;
1111

1212
#[cfg(not(feature = "parallel"))]
13-
pub fn join<O1: Send, O2: Send>(
14-
left: impl FnOnce() -> O1 + Send,
15-
right: impl FnOnce() -> O2 + Send,
16-
) -> (O1, O2) {
13+
pub fn join<O1: Send, O2: Send>(left: impl FnOnce() -> O1 + Send, right: impl FnOnce() -> O2 + Send) -> (O1, O2) {
1714
(left(), right())
1815
}
1916

@@ -41,10 +38,7 @@ mod in_parallel {
4138
use crate::parallel::Reducer;
4239
use crossbeam_utils::thread;
4340

44-
pub fn join<O1: Send, O2: Send>(
45-
left: impl FnOnce() -> O1 + Send,
46-
right: impl FnOnce() -> O2 + Send,
47-
) -> (O1, O2) {
41+
pub fn join<O1: Send, O2: Send>(left: impl FnOnce() -> O1 + Send, right: impl FnOnce() -> O2 + Send) -> (O1, O2) {
4842
thread::scope(|s| {
4943
let left = s.spawn(|_| left());
5044
let right = s.spawn(|_| right());

git-features/src/progress/log.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ impl Progress for Log {
4747
{
4848
self.last_set = Some(now);
4949
match (self.max, self.unit) {
50-
(Some(max), Some(unit)) => {
51-
log::info!("{} → {} / {} {}", self.name, step, max, unit)
52-
}
50+
(Some(max), Some(unit)) => log::info!("{} → {} / {} {}", self.name, step, max, unit),
5351
(None, Some(unit)) => log::info!("{} → {} {}", self.name, step, unit),
5452
(Some(max), None) => log::info!("{} → {} / {}", self.name, step, max),
5553
(None, None) => log::info!("{} → {}", self.name, step),

git-object/src/borrowed/commit.rs

+12-18
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,24 @@ pub struct Commit<'data> {
3131
pub fn parse_message(i: &[u8]) -> IResult<&[u8], &BStr, Error> {
3232
if i.is_empty() {
3333
// newline + [message]
34-
return Err(nom::Err::Error(Error::NomDetail(
35-
i.into(),
36-
"commit message is missing",
37-
)));
34+
return Err(nom::Err::Error(Error::NomDetail(i.into(), "commit message is missing")));
3835
}
39-
let (i, _) = tag(NL)(i).map_err(Error::context(
40-
"a newline separates headers from the message",
41-
))?;
36+
let (i, _) = tag(NL)(i).map_err(Error::context("a newline separates headers from the message"))?;
4237
debug_assert!(!i.is_empty());
4338
Ok((&[], &i.as_bstr()))
4439
}
4540

4641
pub fn parse(i: &[u8]) -> IResult<&[u8], Commit, Error> {
47-
let (i, tree) = parse_header_field(i, b"tree", parse_hex_sha1)
48-
.map_err(Error::context("tree <40 lowercase hex char>"))?;
49-
let (i, parents) = many0(|i| parse_header_field(i, b"parent", parse_hex_sha1))(i).map_err(
50-
Error::context("zero or more 'parent <40 lowercase hex char>'"),
51-
)?;
52-
let (i, author) = parse_header_field(i, b"author", parse_signature)
53-
.map_err(Error::context("author <signature>"))?;
54-
let (i, committer) = parse_header_field(i, b"committer", parse_signature)
55-
.map_err(Error::context("author <signature>"))?;
56-
let (i, encoding) = opt(|i| parse_header_field(i, b"encoding", is_not(NL)))(i)
57-
.map_err(Error::context("author <signature>"))?;
42+
let (i, tree) =
43+
parse_header_field(i, b"tree", parse_hex_sha1).map_err(Error::context("tree <40 lowercase hex char>"))?;
44+
let (i, parents) = many0(|i| parse_header_field(i, b"parent", parse_hex_sha1))(i)
45+
.map_err(Error::context("zero or more 'parent <40 lowercase hex char>'"))?;
46+
let (i, author) =
47+
parse_header_field(i, b"author", parse_signature).map_err(Error::context("author <signature>"))?;
48+
let (i, committer) =
49+
parse_header_field(i, b"committer", parse_signature).map_err(Error::context("author <signature>"))?;
50+
let (i, encoding) =
51+
opt(|i| parse_header_field(i, b"encoding", is_not(NL)))(i).map_err(Error::context("author <signature>"))?;
5852
let (i, pgp_signature) = opt(alt((
5953
|i| parse_header_field_multiline(i, b"gpgsig"),
6054
|i| parse_header_field(i, b"gpgsig", is_not(NL)),

git-object/src/borrowed/tag.rs

+10-14
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,18 @@ pub struct Tag<'data> {
2828
}
2929

3030
fn parse(i: &[u8]) -> IResult<&[u8], Tag, Error> {
31-
let (i, target) = parse_header_field(i, b"object", parse_hex_sha1)
32-
.map_err(Error::context("object <40 lowercase hex char>"))?;
31+
let (i, target) =
32+
parse_header_field(i, b"object", parse_hex_sha1).map_err(Error::context("object <40 lowercase hex char>"))?;
3333

34-
let (i, kind) = parse_header_field(i, b"type", take_while1(is_alphabetic))
35-
.map_err(Error::context("type <object kind>"))?;
36-
let kind =
37-
crate::Kind::from_bytes(kind).map_err(|e| nom::Err::Error(Error::ParseKindError(e)))?;
34+
let (i, kind) =
35+
parse_header_field(i, b"type", take_while1(is_alphabetic)).map_err(Error::context("type <object kind>"))?;
36+
let kind = crate::Kind::from_bytes(kind).map_err(|e| nom::Err::Error(Error::ParseKindError(e)))?;
3837

39-
let (i, tag_version) = parse_header_field(i, b"tag", take_while1(|b| b != NL[0]))
40-
.map_err(Error::context("tag <version>"))?;
38+
let (i, tag_version) =
39+
parse_header_field(i, b"tag", take_while1(|b| b != NL[0])).map_err(Error::context("tag <version>"))?;
4140

42-
let (i, signature) = parse_header_field(i, b"tagger", parse_signature)
43-
.map_err(Error::context("tagger <signature>"))?;
41+
let (i, signature) =
42+
parse_header_field(i, b"tagger", parse_signature).map_err(Error::context("tagger <signature>"))?;
4443
let (i, (message, pgp_signature)) = all_consuming(parse_message)(i)?;
4544
Ok((
4645
i,
@@ -65,10 +64,7 @@ fn parse_message(i: &[u8]) -> IResult<&[u8], (&BStr, Option<&BStr>), Error> {
6564
let (i, _) = tag(NL)(i)?;
6665
fn all_to_end(i: &[u8]) -> IResult<&[u8], (&[u8], &[u8]), Error> {
6766
if i.is_empty() {
68-
return Err(nom::Err::Error(Error::NomDetail(
69-
i.into(),
70-
"tag message is missing",
71-
)));
67+
return Err(nom::Err::Error(Error::NomDetail(i.into(), "tag message is missing")));
7268
}
7369
// an empty signature message signals that there is none - the function signature is needed
7470
// to work with 'alt(…)'. PGP signatures are never empty

git-object/src/borrowed/util/mod.rs

+7-27
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ use nom::{
1515
pub(crate) const NL: &[u8] = b"\n";
1616
pub(crate) const SPACE: &[u8] = b" ";
1717

18-
pub(crate) fn parse_header_field_multiline<'a>(
19-
i: &'a [u8],
20-
name: &'static [u8],
21-
) -> IResult<&'a [u8], &'a [u8], Error> {
18+
pub(crate) fn parse_header_field_multiline<'a>(i: &'a [u8], name: &'static [u8]) -> IResult<&'a [u8], &'a [u8], Error> {
2219
let (i, o) = peek(preceded(
2320
terminated(tag(name), tag(SPACE)),
2421
recognize(tuple((
@@ -38,10 +35,7 @@ pub(crate) fn parse_header_field<'a, T>(
3835
name: &'static [u8],
3936
parse_value: impl Fn(&'a [u8]) -> IResult<&'a [u8], T, Error>,
4037
) -> IResult<&'a [u8], T, Error> {
41-
terminated(
42-
preceded(terminated(tag(name), tag(SPACE)), parse_value),
43-
tag(NL),
44-
)(i)
38+
terminated(preceded(terminated(tag(name), tag(SPACE)), parse_value), tag(NL))(i)
4539
}
4640

4741
fn is_hex_digit_lc(b: u8) -> bool {
@@ -69,25 +63,11 @@ pub(crate) fn parse_signature(i: &[u8]) -> IResult<&[u8], Signature, Error> {
6963
"tagger <name> <<email>> <time seconds since epoch> <+|-><HHMM>",
7064
))?;
7165

72-
let sign = if tzsign[0] == b'-' {
73-
Sign::Minus
74-
} else {
75-
Sign::Plus
76-
};
77-
let hours = btoi::<i32>(&tzhour).map_err(|e| {
78-
nom::Err::Error(Error::ParseIntegerError(
79-
"invalid 'hours' string",
80-
tzhour.into(),
81-
e,
82-
))
83-
})?;
84-
let minutes = btoi::<i32>(&tzminute).map_err(|e| {
85-
nom::Err::Error(Error::ParseIntegerError(
86-
"invalid 'minutes' string",
87-
tzminute.into(),
88-
e,
89-
))
90-
})?;
66+
let sign = if tzsign[0] == b'-' { Sign::Minus } else { Sign::Plus };
67+
let hours = btoi::<i32>(&tzhour)
68+
.map_err(|e| nom::Err::Error(Error::ParseIntegerError("invalid 'hours' string", tzhour.into(), e)))?;
69+
let minutes = btoi::<i32>(&tzminute)
70+
.map_err(|e| nom::Err::Error(Error::ParseIntegerError("invalid 'minutes' string", tzminute.into(), e)))?;
9171
let offset = (hours * 3600 + minutes * 60) * if sign == Sign::Minus { -1 } else { 1 };
9272

9373
Ok((

git-object/src/borrowed/util/tests.rs

+4-28
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@ mod parse_signature {
44
use crate::{Sign, Time};
55
use bstr::ByteSlice;
66

7-
fn signature(
8-
name: &'static str,
9-
email: &'static str,
10-
time: u32,
11-
sign: Sign,
12-
offset: i32,
13-
) -> Signature<'static> {
7+
fn signature(name: &'static str, email: &'static str, time: u32, sign: Sign, offset: i32) -> Signature<'static> {
148
Signature {
159
name: name.as_bytes().as_bstr(),
1610
email: email.as_bytes().as_bstr(),
@@ -24,13 +18,7 @@ mod parse_signature {
2418
parse_signature(b"Sebastian Thiel <[email protected]> 1528473343 -0230")
2519
.unwrap()
2620
.1,
27-
signature(
28-
"Sebastian Thiel",
29-
30-
1528473343,
31-
Sign::Minus,
32-
-9000
33-
)
21+
signature("Sebastian Thiel", "[email protected]", 1528473343, Sign::Minus, -9000)
3422
);
3523
}
3624

@@ -40,13 +28,7 @@ mod parse_signature {
4028
parse_signature(b"Sebastian Thiel <[email protected]> 1528473343 +0230")
4129
.unwrap()
4230
.1,
43-
signature(
44-
"Sebastian Thiel",
45-
46-
1528473343,
47-
Sign::Plus,
48-
9000
49-
)
31+
signature("Sebastian Thiel", "[email protected]", 1528473343, Sign::Plus, 9000)
5032
);
5133
}
5234

@@ -56,13 +38,7 @@ mod parse_signature {
5638
parse_signature(b"Sebastian Thiel <[email protected]> 1528473343 -0000")
5739
.unwrap()
5840
.1,
59-
signature(
60-
"Sebastian Thiel",
61-
62-
1528473343,
63-
Sign::Minus,
64-
0
65-
)
41+
signature("Sebastian Thiel", "[email protected]", 1528473343, Sign::Minus, 0)
6642
);
6743
}
6844

git-object/tests/borrowed/commit.rs

+4-13
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ mod method {
77
fn tree() {
88
let fixture = fixture_bytes("commit", "unsigned.txt");
99
let commit = Commit::from_bytes(&fixture).unwrap();
10-
assert_eq!(
11-
commit.tree(),
12-
hex_to_id("1b2dfb4ac5e42080b682fc676e9738c94ce6d54d")
13-
);
10+
assert_eq!(commit.tree(), hex_to_id("1b2dfb4ac5e42080b682fc676e9738c94ce6d54d"));
1411
assert_eq!(commit.tree, "1b2dfb4ac5e42080b682fc676e9738c94ce6d54d");
1512
}
1613
}
@@ -43,9 +40,7 @@ mod from_bytes {
4340
Commit::from_bytes(&fixture_bytes("commit", "whitespace.txt")).unwrap(),
4441
Commit {
4542
tree: b"9bed6275068a0575243ba8409253e61af81ab2ff".as_bstr(),
46-
parents: SmallVec::from(
47-
vec![b"26b4df046d1776c123ac69d918f5aec247b58cc6".as_bstr()]
48-
),
43+
parents: SmallVec::from(vec![b"26b4df046d1776c123ac69d918f5aec247b58cc6".as_bstr()]),
4944
author: signature(1592448450),
5045
committer: signature(1592448450),
5146
encoding: None,
@@ -61,9 +56,7 @@ mod from_bytes {
6156
Commit::from_bytes(&fixture_bytes("commit", "signed-singleline.txt")).unwrap(),
6257
Commit {
6358
tree: b"00fc39317701176e326974ce44f5bd545a32ec0b".as_bstr(),
64-
parents: SmallVec::from(
65-
vec![b"09d8d3a12e161a7f6afb522dbe8900a9c09bce06".as_bstr()]
66-
),
59+
parents: SmallVec::from(vec![b"09d8d3a12e161a7f6afb522dbe8900a9c09bce06".as_bstr()]),
6760
author: signature(1592391367),
6861
committer: signature(1592391367),
6962
encoding: None,
@@ -111,9 +104,7 @@ mod from_bytes {
111104
Commit::from_bytes(&fixture_bytes("commit", "with-encoding.txt")).unwrap(),
112105
Commit {
113106
tree: b"4a1c03029e7407c0afe9fc0320b3258e188b115e".as_bstr(),
114-
parents: SmallVec::from(
115-
vec![b"7ca98aad461a5c302cb4c9e3acaaa6053cc67a62".as_bstr()]
116-
),
107+
parents: SmallVec::from(vec![b"7ca98aad461a5c302cb4c9e3acaaa6053cc67a62".as_bstr()]),
117108
author: signature(1592438199),
118109
committer: signature(1592438199),
119110
encoding: Some("ISO-8859-1".into()),

git-object/tests/borrowed/tag.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ mod method {
1313
fn target() {
1414
let fixture = fixture_bytes("tag", "signed.txt");
1515
let tag = Tag::from_bytes(&fixture).unwrap();
16-
assert_eq!(
17-
tag.target(),
18-
hex_to_id("ffa700b4aca13b80cb6b98a078e7c96804f8e0ec")
19-
);
16+
assert_eq!(tag.target(), hex_to_id("ffa700b4aca13b80cb6b98a078e7c96804f8e0ec"));
2017
assert_eq!(tag.target, "ffa700b4aca13b80cb6b98a078e7c96804f8e0ec")
2118
}
2219
}

git-odb/src/loose/db/mod.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ impl Db {
7070
let mut is_valid_path = false;
7171
let e = res.map_err(Error::WalkDir).map(|e| {
7272
let p = e.path();
73-
let (c1, c2) = p
74-
.components()
75-
.fold((None, None), |(_c1, c2), cn| (c2, Some(cn)));
73+
let (c1, c2) = p.components().fold((None, None), |(_c1, c2), cn| (c2, Some(cn)));
7674
if let (Some(Normal(c1)), Some(Normal(c2))) = (c1, c2) {
7775
if c1.len() == 2 && c2.len() == 38 {
7876
if let (Some(c1), Some(c2)) = (c1.to_str(), c2.to_str()) {
@@ -106,8 +104,7 @@ impl Db {
106104
let mut decompressed = [0; HEADER_READ_UNCOMPRESSED_BYTES];
107105
let mut compressed = [0; HEADER_READ_COMPRESSED_BYTES];
108106
let ((_status, _consumed_in, consumed_out), bytes_read, mut input_stream) = {
109-
let mut istream =
110-
fs::File::open(&path).map_err(|e| Error::Io(e, "open", path.to_owned()))?;
107+
let mut istream = fs::File::open(&path).map_err(|e| Error::Io(e, "open", path.to_owned()))?;
111108
let bytes_read = istream
112109
.read(&mut compressed[..])
113110
.map_err(|e| Error::Io(e, "read", path.to_owned()))?;

git-odb/src/loose/db/serde.rs

+3-12
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,7 @@ pub fn parse_header(input: &[u8]) -> Result<(object::Kind, usize, usize), Error>
1313
(Some(kind), Some(size)) => Ok((
1414
object::Kind::from_bytes(kind)?,
1515
btoi::btoi(size).map_err(|e| {
16-
Error::ParseIntegerError(
17-
"Object size in header could not be parsed",
18-
size.to_owned(),
19-
e,
20-
)
16+
Error::ParseIntegerError("Object size in header could not be parsed", size.to_owned(), e)
2117
})?,
2218
header_end + 1, // account for 0 byte
2319
)),
@@ -35,11 +31,7 @@ fn kind_to_bytes_with_space(object: object::Kind) -> &'static [u8] {
3531
}
3632
}
3733

38-
pub fn write_header(
39-
object: object::Kind,
40-
size: usize,
41-
mut out: impl std::io::Write,
42-
) -> Result<usize, std::io::Error> {
34+
pub fn write_header(object: object::Kind, size: usize, mut out: impl std::io::Write) -> Result<usize, std::io::Error> {
4335
let mut written = out.write(kind_to_bytes_with_space(object))?;
4436
written += itoa::write(&mut out, size)?;
4537
out.write_u8(0)?;
@@ -63,8 +55,7 @@ mod tests {
6355
] {
6456
let written = write_header(*kind, *size, &mut buf[..]).unwrap();
6557
assert_eq!(buf[..written].as_bstr(), expected.as_bstr());
66-
let (actual_kind, actual_size, actual_read) =
67-
parse_header(&buf[..written]).unwrap();
58+
let (actual_kind, actual_size, actual_read) = parse_header(&buf[..written]).unwrap();
6859
assert_eq!(actual_kind, *kind);
6960
assert_eq!(actual_size, *size);
7061
assert_eq!(actual_read, written);

git-odb/src/loose/object.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -80,19 +80,16 @@ impl Object {
8080
if let Some(path) = self.path.take() {
8181
// NOTE: For now we just re-read everything from the beginning without seeking, as our buffer
8282
// is small so the seek might be more expensive than just reading everything.
83-
let mut file =
84-
std::fs::File::open(&path).map_err(|e| Error::Io(e, "open", path.clone()))?;
83+
let mut file = std::fs::File::open(&path).map_err(|e| Error::Io(e, "open", path.clone()))?;
8584
let file_size = file
8685
.metadata()
8786
.map_err(|e| Error::Io(e, "read metadata", path.clone()))?
8887
.len() as usize;
8988
let mut buf = Vec::with_capacity(file_size);
90-
file.read_to_end(&mut buf)
91-
.map_err(|e| Error::Io(e, "read", path))?;
89+
file.read_to_end(&mut buf).map_err(|e| Error::Io(e, "read", path))?;
9290
self.compressed_data = SmallVec::from(buf);
9391
}
94-
self.decompressed_data =
95-
SmallVec::from(decompress_to_vec_zlib(&self.compressed_data[..]).unwrap());
92+
self.decompressed_data = SmallVec::from(decompress_to_vec_zlib(&self.compressed_data[..]).unwrap());
9693
self.decompressed_data.shrink_to_fit();
9794
assert!(self.decompressed_data.len() == total_size);
9895
self.decompression_complete = true;

0 commit comments

Comments
 (0)