[BUG] Allow 4 charachter SHA in /src/commit
- Adjust the `RepoRefByType` middleware to allow for commit SHAs that
are as short as 4 characters (the minium that Git requires).
- Integration test added.
- Follow up to 4d76bbeda7
- Resolves #4781
This commit is contained in:
parent
641b0f74b6
commit
b967fce25d
2 changed files with 9 additions and 2 deletions
|
@ -903,7 +903,7 @@ func getRefName(ctx *Base, repo *Repository, pathType RepoRefType) string {
|
||||||
case RepoRefCommit:
|
case RepoRefCommit:
|
||||||
parts := strings.Split(path, "/")
|
parts := strings.Split(path, "/")
|
||||||
|
|
||||||
if len(parts) > 0 && len(parts[0]) >= 7 && len(parts[0]) <= repo.GetObjectFormat().FullLength() {
|
if len(parts) > 0 && len(parts[0]) >= 4 && len(parts[0]) <= repo.GetObjectFormat().FullLength() {
|
||||||
repo.TreePath = strings.Join(parts[1:], "/")
|
repo.TreePath = strings.Join(parts[1:], "/")
|
||||||
return parts[0]
|
return parts[0]
|
||||||
}
|
}
|
||||||
|
@ -1027,7 +1027,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context
|
||||||
return cancel
|
return cancel
|
||||||
}
|
}
|
||||||
ctx.Repo.CommitID = ctx.Repo.Commit.ID.String()
|
ctx.Repo.CommitID = ctx.Repo.Commit.ID.String()
|
||||||
} else if len(refName) >= 7 && len(refName) <= ctx.Repo.GetObjectFormat().FullLength() {
|
} else if len(refName) >= 4 && len(refName) <= ctx.Repo.GetObjectFormat().FullLength() {
|
||||||
ctx.Repo.IsViewCommit = true
|
ctx.Repo.IsViewCommit = true
|
||||||
ctx.Repo.CommitID = refName
|
ctx.Repo.CommitID = refName
|
||||||
|
|
||||||
|
|
|
@ -710,6 +710,13 @@ func TestCommitView(t *testing.T) {
|
||||||
doc := NewHTMLParser(t, resp.Body)
|
doc := NewHTMLParser(t, resp.Body)
|
||||||
commitTitle := doc.Find(".commit-summary").Text()
|
commitTitle := doc.Find(".commit-summary").Text()
|
||||||
assert.Contains(t, commitTitle, "Initial commit")
|
assert.Contains(t, commitTitle, "Initial commit")
|
||||||
|
|
||||||
|
req = NewRequest(t, "GET", "/user2/repo1/src/commit/65f1")
|
||||||
|
resp = MakeRequest(t, req, http.StatusOK)
|
||||||
|
|
||||||
|
doc = NewHTMLParser(t, resp.Body)
|
||||||
|
commitTitle = doc.Find(".shortsha").Text()
|
||||||
|
assert.Contains(t, commitTitle, "65f1bf27bc")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Full commit ID", func(t *testing.T) {
|
t.Run("Full commit ID", func(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue