From 62b920238cfcded2b4871876805316a375158466 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Mon, 04 May 2026 08:13:41 +0000 Subject: [PATCH] knotmirror: reinstate LastCommitInfo in tree responses Signed-off-by: oppiliappan --- knotmirror/xrpc/git_get_tree.go | 40 ++++++++++++++++++++++++++++++++++++---- 1 file(s) changed, 36 insertion(s)(+), 4 deletion(s)(-) diff --git a/knotmirror/xrpc/git_get_tree.go b/knotmirror/xrpc/git_get_tree.go --- a/knotmirror/xrpc/git_get_tree.go +++ b/knotmirror/xrpc/git_get_tree.go @@ -13,6 +13,7 @@ "github.com/bluesky-social/indigo/atproto/syntax" "tangled.org/core/api/tangled" "tangled.org/core/appview/pages/markup" "tangled.org/core/knotserver/git" + "tangled.org/core/types" ) func (x *Xrpc) GetTree(w http.ResponseWriter, r *http.Request) { @@ -106,11 +107,42 @@ dotdotPtr = &dotdot } } + // find the most recent commit across all entries for the directory-level last commit + var lastCommitInfo *types.LastCommitInfo + for _, file := range files { + if file.LastCommit == nil { + continue + } + if lastCommitInfo == nil { + lastCommitInfo = file.LastCommit + continue + } + if file.LastCommit.When.After(lastCommitInfo.When) { + lastCommitInfo = file.LastCommit + } + } + + var lastCommit *tangled.GitTempGetTree_LastCommit + if lastCommitInfo != nil { + lastCommit = &tangled.GitTempGetTree_LastCommit{ + Hash: lastCommitInfo.Hash.String(), + Message: lastCommitInfo.Message, + When: lastCommitInfo.When.Format(time.RFC3339), + } + if commit, err := gr.Commit(lastCommitInfo.Hash); err == nil { + lastCommit.Author = &tangled.GitTempGetTree_Signature{ + Name: commit.Author.Name, + Email: commit.Author.Email, + } + } + } + return &tangled.GitTempGetTree_Output{ - Ref: ref, - Parent: parentPtr, - Dotdot: dotdotPtr, - Files: treeEntries, + Ref: ref, + Parent: parentPtr, + Dotdot: dotdotPtr, + Files: treeEntries, + LastCommit: lastCommit, Readme: &tangled.GitTempGetTree_Readme{ Filename: readmeFileName, Contents: readmeContents, -- tangled.sh