1
- use std:: { borrow:: Cow , io} ;
2
-
3
1
use anyhow:: bail;
4
2
use gix:: Tree ;
3
+ use std:: io:: BufWriter ;
4
+ use std:: { borrow:: Cow , io} ;
5
5
6
6
use crate :: OutputFormat ;
7
7
8
8
mod entries {
9
- use std:: collections:: VecDeque ;
10
-
11
9
use gix:: {
12
10
bstr:: { BStr , BString , ByteSlice , ByteVec } ,
13
11
objs:: tree:: EntryRef ,
14
12
traverse:: tree:: visit:: Action ,
15
13
} ;
14
+ use std:: collections:: VecDeque ;
16
15
17
16
use crate :: repository:: tree:: format_entry;
18
17
@@ -161,8 +160,9 @@ pub fn entries(
161
160
let tree = treeish_to_tree ( treeish, & repo) ?;
162
161
163
162
if recursive {
164
- let mut delegate = entries:: Traverse :: new ( extended. then_some ( & repo) , Some ( & mut out) ) ;
165
- tree. traverse ( ) . breadthfirst ( & mut delegate) ?;
163
+ let mut write = BufWriter :: new ( out) ;
164
+ let mut delegate = entries:: Traverse :: new ( extended. then_some ( & repo) , Some ( & mut write) ) ;
165
+ tree. traverse ( ) . depthfirst ( & mut delegate) ?;
166
166
} else {
167
167
for entry in tree. iter ( ) {
168
168
let entry = entry?;
@@ -190,9 +190,9 @@ fn format_entry(
190
190
size : Option < u64 > ,
191
191
) -> std:: io:: Result < ( ) > {
192
192
use gix:: objs:: tree:: EntryKind :: * ;
193
- writeln ! (
193
+ write ! (
194
194
out,
195
- "{} {}{} {} " ,
195
+ "{} {}{} " ,
196
196
match entry. mode. kind( ) {
197
197
Tree => "TREE" ,
198
198
Blob => "BLOB" ,
@@ -201,7 +201,8 @@ fn format_entry(
201
201
Commit => "SUBM" ,
202
202
} ,
203
203
entry. oid,
204
- size. map_or_else( || "" . into( ) , |s| Cow :: Owned ( format!( " {s}" ) ) ) ,
205
- filename
206
- )
204
+ size. map_or_else( || "" . into( ) , |s| Cow :: Owned ( format!( " {s}" ) ) )
205
+ ) ?;
206
+ out. write_all ( filename) ?;
207
+ out. write_all ( b"\n " )
207
208
}
0 commit comments