authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-06-24 03:03:02 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-06-24 03:03:02 -07:00
log23a237c9aaa5b8f5590f0db438cc00e9e1c5e1a8
tree261570d2cfc3fe929d4ed4f7e2280edf789fc559
parentc171ea63e41ea81f9e9c973aa7cc05f45673849b
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

add raw field to Tree, Commit, Tag


1 files changed, 19 insertions(+), 4 deletions(-)

git.zig+19-4
......@@ -164,7 +164,14 @@ pub fn parseCommit(alloc: std.mem.Allocator, commitfile: string) !Commit {
164164 defer t.end();
165165
166166 var iter = std.mem.splitScalar(u8, commitfile, '\n');
167 var result: Commit = undefined;
167 var result: Commit = .{
168 .raw = commitfile,
169 .tree = undefined,
170 .parents = undefined,
171 .author = undefined,
172 .committer = undefined,
173 .message = undefined,
174 };
168175 var parents = std.array_list.Managed(CommitId).init(alloc);
169176 errdefer parents.deinit();
170177 while (true) {
......@@ -570,8 +577,13 @@ pub fn parseTag(tagfile: string) !Tag {
570577 defer t.end();
571578
572579 var iter = std.mem.splitScalar(u8, tagfile, '\n');
573 var result: Tag = undefined;
574 result.tagger = null;
580 var result: Tag = .{
581 .raw = tagfile,
582 .object = undefined,
583 .type = undefined,
584 .tagger = null,
585 .message = undefined,
586 };
575587 const object = extras.trimPrefixEnsure(iter.next().?, "object ").?;
576588 std.debug.assert(object.len == 40);
577589 result.object = object[0..40];
......@@ -1110,7 +1122,7 @@ pub const Repository = struct {
11101122 .symlink => .{ .blob = .{ .id = &item.id_bytes } },
11111123 .none => unreachable,
11121124 };
1113 const tree: Tree = .{ .children = children_slice };
1125 const tree: Tree = .{ .raw = obj.content, .children = children_slice };
11141126 if (cache_behavior == .cache) try r.trees.put(r.gpa, id.id, tree);
11151127 return .{ id, tree };
11161128 }
......@@ -1630,6 +1642,7 @@ fn traverseTo(r: *Repository, arena: std.mem.Allocator, treestart_id: TreeId, di
16301642}
16311643
16321644pub const Tree = struct {
1645 raw: []const u8,
16331646 children: []const Object,
16341647
16351648 pub fn get(self: Tree, name: string) ?Object {
......@@ -1915,6 +1928,7 @@ pub const Tree = struct {
19151928};
19161929
19171930pub const Commit = struct {
1931 raw: []const u8,
19181932 tree: TreeId,
19191933 parents: []const CommitId,
19201934 author: UserAndAt,
......@@ -1929,6 +1943,7 @@ pub const UserAndAt = struct {
19291943};
19301944
19311945pub const Tag = struct {
1946 raw: []const u8,
19321947 object: Id,
19331948 type: RefType,
19341949 tagger: ?UserAndAt,