authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-11 18:51:58 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-11 20:00:18 -07:00
log88f69f71a19d141f810e5fe550909bad616c87c4
tree9f8ec57eb1aab35accc46ffd041bfef56f844d9b
parent60b391edd06236b887dd17cfcc9b25c73b4fe00e
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

actually it appears tags don't use the gpgsig field

see iocaine/tags/iocaine-3.5.0 for an ssh example in the wild see git/tags/v2.55.0-rc2 for a pgp example in the wild

1 files changed, 0 insertions(+), 21 deletions(-)

git.zig-21
...@@ -575,7 +575,6 @@ pub fn parseTag(tagfile: string) !Tag {...@@ -575,7 +575,6 @@ pub fn parseTag(tagfile: string) !Tag {
575 .object = undefined,575 .object = undefined,
576 .type = undefined,576 .type = undefined,
577 .tagger = null,577 .tagger = null,
578 .gpgsig = "",
579 .message = undefined,578 .message = undefined,
580 };579 };
581 const object = extras.trimPrefixEnsure(iter.next().?, "object ").?;580 const object = extras.trimPrefixEnsure(iter.next().?, "object ").?;
...@@ -585,27 +584,12 @@ pub fn parseTag(tagfile: string) !Tag {...@@ -585,27 +584,12 @@ pub fn parseTag(tagfile: string) !Tag {
585 result.type = std.meta.stringToEnum(RefType, ty).?;584 result.type = std.meta.stringToEnum(RefType, ty).?;
586 const tag = extras.trimPrefixEnsure(iter.next().?, "tag ").?;585 const tag = extras.trimPrefixEnsure(iter.next().?, "tag ").?;
587 _ = tag;586 _ = tag;
588 var f_start: usize = 0;
589 while (true) {587 while (true) {
590 const line_start = iter.index.?;
591 const line = iter.next() orelse break;588 const line = iter.next() orelse break;
592 if (line.len == 0) break;589 if (line.len == 0) break;
593 const space = std.mem.indexOfScalar(u8, line, ' ').?;590 const space = std.mem.indexOfScalar(u8, line, ' ').?;
594 const k = line[0..space];591 const k = line[0..space];
595 if (std.mem.eql(u8, k, "tagger")) result.tagger = try parseCommitUserAndAt(line[space + 1 ..]);592 if (std.mem.eql(u8, k, "tagger")) result.tagger = try parseCommitUserAndAt(line[space + 1 ..]);
596 if (std.mem.eql(u8, k, "gpgsig")) {
597 f_start = line_start + 7;
598 _ = iter.next().?;
599 while (true) {
600 const line2_start = iter.index.?;
601 const line2 = iter.next() orelse break;
602 if (line2.len == 0 or line2[0] != ' ') {
603 iter.index = line2_start;
604 break;
605 }
606 }
607 result.gpgsig = tagfile[f_start .. iter.index.? - 1];
608 }
609 }593 }
610 result.message = iter.rest();594 result.message = iter.rest();
611 return result;595 return result;
...@@ -2152,17 +2136,12 @@ pub const Tag = struct {...@@ -2152,17 +2136,12 @@ pub const Tag = struct {
2152 object: Id,2136 object: Id,
2153 type: RefType,2137 type: RefType,
2154 tagger: ?UserAndAt,2138 tagger: ?UserAndAt,
2155 gpgsig: []const u8,
2156 message: string,2139 message: string,
21572140
2158 pub fn destroy(t: *Tag, r: *Repository) void {2141 pub fn destroy(t: *Tag, r: *Repository) void {
2159 r.gpa.free(t.raw);2142 r.gpa.free(t.raw);
2160 r.gpa.destroy(t);2143 r.gpa.destroy(t);
2161 }2144 }
2162
2163 pub fn signature(t: *const Tag, allocator: std.mem.Allocator) !Signature {
2164 return .from(allocator, t.gpgsig, t.raw);
2165 }
2166};2145};
21672146
2168pub const Ref = struct {2147pub const Ref = struct {