feat(api): report truncated trees and last commits in GetTree
- commit
- dca0ed73accf04bafe05087d9c54b8a58e7a55b1
- author
- brice · · 2026-10-10 10:20 UTC
- parent
- a137f54
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· 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 { | |||
| 183 | 183 | // TreeId is the object id of the listed directory. | |
| 184 | 184 | string tree_id = 2; | |
| 185 | 185 | // 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 | 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 | 201 | // 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 other | 185 | // 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. | ||