api: add GetReferenceSHA (#5546)

pull/5340/head^2
Unknwon 2018-12-16 19:47:32 -05:00
parent cc1a168aa0
commit f91cb9321e
No known key found for this signature in database
GPG Key ID: 25B575AE3213B2B3
5 changed files with 51 additions and 3 deletions

View File

@ -16,7 +16,7 @@ import (
"github.com/gogs/gogs/pkg/setting" "github.com/gogs/gogs/pkg/setting"
) )
const APP_VER = "0.11.79.1211" const APP_VER = "0.11.80.1216"
func init() { func init() {
setting.AppVer = APP_VER setting.AppVer = APP_VER

View File

@ -26,7 +26,7 @@ type APIContext struct {
} }
// FIXME: move to github.com/gogs/go-gogs-client // FIXME: move to github.com/gogs/go-gogs-client
const DOC_URL = "https://github.com/gogs/go-gogs-client/wiki" const DOC_URL = "https://github.com/gogs/docs-api"
// Error responses error message to client with given message. // Error responses error message to client with given message.
// If status is 500, also it prints error to log. // If status is 500, also it prints error to log.

View File

@ -252,6 +252,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/commits", func() { m.Group("/commits", func() {
m.Get("/:sha", repo.GetSingleCommit) m.Get("/:sha", repo.GetSingleCommit)
m.Get("/*", repo.GetReferenceSHA)
}) })
m.Group("/keys", func() { m.Group("/keys", func() {

View File

@ -5,6 +5,8 @@
package repo package repo
import ( import (
"net/http"
"strings"
"time" "time"
"github.com/gogs/git-module" "github.com/gogs/git-module"
@ -17,6 +19,12 @@ import (
) )
func GetSingleCommit(c *context.APIContext) { func GetSingleCommit(c *context.APIContext) {
if strings.Contains(c.Req.Header.Get("Accept"), api.MediaApplicationSHA) {
c.SetParams("*", c.Params(":sha"))
GetReferenceSHA(c)
return
}
gitRepo, err := git.OpenRepository(c.Repo.Repository.RepoPath()) gitRepo, err := git.OpenRepository(c.Repo.Repository.RepoPath())
if err != nil { if err != nil {
c.ServerError("OpenRepository", err) c.ServerError("OpenRepository", err)
@ -89,3 +97,42 @@ func GetSingleCommit(c *context.APIContext) {
Parents: apiParents, Parents: apiParents,
}) })
} }
func GetReferenceSHA(c *context.APIContext) {
gitRepo, err := git.OpenRepository(c.Repo.Repository.RepoPath())
if err != nil {
c.ServerError("OpenRepository", err)
return
}
ref := c.Params("*")
refType := 0 // 0-undetermined, 1-branch, 2-tag
if strings.HasPrefix(ref, git.BRANCH_PREFIX) {
ref = strings.TrimPrefix(ref, git.BRANCH_PREFIX)
refType = 1
} else if strings.HasPrefix(ref, git.TAG_PREFIX) {
ref = strings.TrimPrefix(ref, git.TAG_PREFIX)
refType = 2
} else {
if gitRepo.IsBranchExist(ref) {
refType = 1
} else if gitRepo.IsTagExist(ref) {
refType = 2
} else {
c.NotFound()
return
}
}
var sha string
if refType == 1 {
sha, err = gitRepo.GetBranchCommitID(ref)
} else if refType == 2 {
sha, err = gitRepo.GetTagCommitID(ref)
}
if err != nil {
c.NotFoundOrServerError("get reference commit ID", git.IsErrNotExist, err)
return
}
c.PlainText(http.StatusOK, []byte(sha))
}

View File

@ -1 +1 @@
0.11.79.1211 0.11.80.1216