detached dca0ed7

feat(api): report truncated trees and last commits in GetTree

commit
dca0ed73accf04bafe05087d9c54b8a58e7a55b1
author
brice · · 2026-10-10 10:20 UTC
parent
a137f54
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
2 files · +43 -5
M gen/ermite/git.pb.go +31 -4 generated file: collapsed
M proto/ermite/git.proto +12 -1
@@ -183,8 +183,19 @@ message GetTreeResponse {
183183 // TreeId is the object id of the listed directory.
184184 string tree_id = 2;
185185 // Entries are the entries of the directory: directories first, then the other
186- // entries, each group ordered by name.
186+ // entries, each group ordered by name. A response holds at most 5,000
187+ // entries (a server limit that may change; rely on truncated, not on the
188+ // number): past that, the first 5,000 in this order are returned and
189+ // truncated is set. Paging may be added later, additively.
187190 repeated TreeEntry entries = 3;
191+ // LastCommitsTruncated is true when include_last_commit was set and the
192+ // server gave a last_commit to the first entries only (at most 200 of them,
193+ // in the order of entries), because each one costs a history lookup. The
194+ // other entries have no last_commit although they have one in Git.
195+ bool last_commits_truncated = 4;
196+ // Truncated is true when the directory has more entries than the response
197+ // holds; entries are then the first ones in the documented order.
198+ bool truncated = 5;
188199 }
189200
190201 // BlobInfo describes a file.
@@ -183,8 +183,19 @@ message GetTreeResponse {
183 // TreeId is the object id of the listed directory.183 // TreeId is the object id of the listed directory.
184 string tree_id = 2;184 string tree_id = 2;
185 // Entries are the entries of the directory: directories first, then the other185 // Entries are the entries of the directory: directories first, then the other
186- // entries, each group ordered by name.186+ // entries, each group ordered by name. A response holds at most 5,000
187+ // entries (a server limit that may change; rely on truncated, not on the
188+ // number): past that, the first 5,000 in this order are returned and
189+ // truncated is set. Paging may be added later, additively.
187 repeated TreeEntry entries = 3;190 repeated TreeEntry entries = 3;
191+ // LastCommitsTruncated is true when include_last_commit was set and the
192+ // server gave a last_commit to the first entries only (at most 200 of them,
193+ // in the order of entries), because each one costs a history lookup. The
194+ // other entries have no last_commit although they have one in Git.
195+ bool last_commits_truncated = 4;
196+ // Truncated is true when the directory has more entries than the response
197+ // holds; entries are then the first ones in the documented order.
198+ bool truncated = 5;
188 }199 }
189 200
190 // BlobInfo describes a file.201 // BlobInfo describes a file.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 18

↑↓ moveenter openesc close