From 4344a6410788f30848e5153f6356dcdd0774bebc Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 8 May 2022 20:32:45 +0800 Subject: Allow custom default merge message with .gitea/default_merge_message/_TEMPLATE.md (#18177) * Allow custom default merge message with .gitea/MERGE_MESSAGE__TEMPLATE.md * Some improvements * Follow some advices * Fix bug * Fix bug * Fix lint * Fix close comment * Fix test * Fix and docs * Improve codes * Update docs and remove unnecessary variables * return error for GetDefaultMergeMessage * Fix test * improve code * ignore unknow unit type * return error for GetDefaultMergeMessage * Update services/pull/merge.go * Some improvements * Follow some advices * Fix bug * Fix lint * Improve codes * Update docs and remove unnecessary variables * return error for GetDefaultMergeMessage * improve code * Handle deleted HeadRepo in GetDefaultMergeMessage Signed-off-by: Andrew Thornton * Fix test * Fix test Co-authored-by: zeripath --- modules/git/commit.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'modules/git') diff --git a/modules/git/commit.go b/modules/git/commit.go index 8337e54fef..8c194ef502 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -17,6 +17,7 @@ import ( "strings" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/util" ) // Commit represents a git commit. @@ -306,6 +307,35 @@ func (c *Commit) HasFile(filename string) (bool, error) { return true, nil } +// GetFileContent reads a file content as a string or returns false if this was not possible +func (c *Commit) GetFileContent(filename string, limit int) (string, error) { + entry, err := c.GetTreeEntryByPath(filename) + if err != nil { + return "", err + } + + r, err := entry.Blob().DataAsync() + if err != nil { + return "", err + } + defer r.Close() + + if limit > 0 { + bs := make([]byte, limit) + n, err := util.ReadAtMost(r, bs) + if err != nil { + return "", err + } + return string(bs[:n]), nil + } + + bytes, err := io.ReadAll(r) + if err != nil { + return "", err + } + return string(bytes), nil +} + // GetSubModules get all the sub modules of current revision git tree func (c *Commit) GetSubModules() (*ObjectCache, error) { if c.submoduleCache != nil { -- cgit v1.2.3