mirror of https://github.com/gogs/gogs.git
api: add GetReferenceSHA (#5546)
parent
cc1a168aa0
commit
f91cb9321e
2
gogs.go
2
gogs.go
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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))
|
||||||
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0.11.79.1211
|
0.11.80.1216
|
||||||
|
|
Loading…
Reference in New Issue