mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in NOTICE, alongside LICENSE. The header lint accepts any copyright line above the SPDX line, so it no longer demands an upstream one. Co-authored-by: Hanzo Dev <[email protected]>
71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package repo
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/hanzoai/git/services/context"
|
|
files_service "github.com/hanzoai/git/services/repository/files"
|
|
)
|
|
|
|
// GetTree get the tree of a repository.
|
|
func GetTree(ctx *context.APIContext) {
|
|
// swagger:operation GET /repos/{owner}/{repo}/git/trees/{sha} repository GetTree
|
|
// ---
|
|
// summary: Gets the tree of a repository.
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: owner
|
|
// in: path
|
|
// description: owner of the repo
|
|
// type: string
|
|
// required: true
|
|
// - name: repo
|
|
// in: path
|
|
// description: name of the repo
|
|
// type: string
|
|
// required: true
|
|
// - name: sha
|
|
// in: path
|
|
// description: sha of the commit
|
|
// type: string
|
|
// required: true
|
|
// - name: recursive
|
|
// in: query
|
|
// description: show all directories and files
|
|
// required: false
|
|
// type: boolean
|
|
// - name: page
|
|
// in: query
|
|
// description: page number; the 'truncated' field in the response will be true if there are still more items after this page, false if the last page
|
|
// required: false
|
|
// type: integer
|
|
// - name: per_page
|
|
// in: query
|
|
// description: number of items per page
|
|
// required: false
|
|
// type: integer
|
|
// responses:
|
|
// "200":
|
|
// "$ref": "#/responses/GitTreeResponse"
|
|
// "400":
|
|
// "$ref": "#/responses/error"
|
|
// "404":
|
|
// "$ref": "#/responses/notFound"
|
|
|
|
sha := ctx.PathParam("sha")
|
|
if len(sha) == 0 {
|
|
ctx.APIError(http.StatusBadRequest, "sha not provided")
|
|
return
|
|
}
|
|
if tree, err := files_service.GetTreeBySHA(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, sha, ctx.FormInt("page"), ctx.FormInt("per_page"), ctx.FormBool("recursive")); err != nil {
|
|
ctx.APIErrorAuto(err)
|
|
} else {
|
|
ctx.SetTotalCountHeader(int64(tree.TotalCount))
|
|
ctx.JSON(http.StatusOK, tree)
|
|
}
|
|
}
|