From 1632478a4d186265f0f260c85327214771d79632 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Sun, 17 May 2026 22:11:01 +0900 Subject: [PATCH] knotserver/internal: leave `refUpdate.meta` empty for deleted refs Signed-off-by: Seongmin Lee --- knotserver/internal.go | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/knotserver/internal.go b/knotserver/internal.go index 39b8c93b..b7205274 100644 --- a/knotserver/internal.go +++ b/knotserver/internal.go @@ -275,23 +275,6 @@ func (h *InternalHandle) PostReceiveHook(w http.ResponseWriter, r *http.Request) } func (h *InternalHandle) insertRefUpdate(line git.PostReceiveLine, gitUserDid, ownerDid, repoDid string) error { - repoPath, _, _, resolveErr := h.db.ResolveRepoDIDOnDisk(h.c.Repo.ScanPath, repoDid) - if resolveErr != nil { - return fmt.Errorf("failed to resolve repo on disk: %w", resolveErr) - } - - gr, err := git.Open(repoPath, line.Ref) - if err != nil { - return fmt.Errorf("failed to open git repo at ref %s: %w", line.Ref, err) - } - - meta, err := gr.RefUpdateMeta(line) - if err != nil { - return fmt.Errorf("failed to get ref update metadata: %w", err) - } - - metaRecord := meta.AsRecord() - refUpdate := tangled.GitRefUpdate{ OldSha: line.OldSha.String(), NewSha: line.NewSha.String(), @@ -299,7 +282,27 @@ func (h *InternalHandle) insertRefUpdate(line git.PostReceiveLine, gitUserDid, o CommitterDid: gitUserDid, OwnerDid: &ownerDid, Repo: repoDid, - Meta: &metaRecord, + Meta: nil, + } + + if !line.NewSha.IsZero() { + repoPath, _, _, resolveErr := h.db.ResolveRepoDIDOnDisk(h.c.Repo.ScanPath, repoDid) + if resolveErr != nil { + return fmt.Errorf("failed to resolve repo on disk: %w", resolveErr) + } + + gr, err := git.Open(repoPath, line.Ref) + if err != nil { + return fmt.Errorf("failed to open git repo at ref %s: %w", line.Ref, err) + } + + meta, err := gr.RefUpdateMeta(line) + if err != nil { + return fmt.Errorf("failed to get ref update metadata: %w", err) + } + + refUpdate.Meta = new(tangled.GitRefUpdate_Meta) + *refUpdate.Meta = meta.AsRecord() } eventJson, err := json.Marshal(refUpdate) -- 2.51.2