@ -773,6 +773,8 @@ const (
RepoRefBlob
)
const headRefName = "HEAD"
// RepoRef handles repository reference names when the ref name is not
// explicitly given
func RepoRef ( ) func ( * Context ) context . CancelFunc {
@ -833,6 +835,14 @@ func getRefName(ctx *Base, repo *Repository, pathType RepoRefType) string {
case RepoRefBranch :
ref := getRefNameFromPath ( ctx , repo , path , repo . GitRepo . IsBranchExist )
if len ( ref ) == 0 {
// check if ref is HEAD
parts := strings . Split ( path , "/" )
if parts [ 0 ] == headRefName {
repo . TreePath = strings . Join ( parts [ 1 : ] , "/" )
return repo . Repository . DefaultBranch
}
// maybe it's a renamed branch
return getRefNameFromPath ( ctx , repo , path , func ( s string ) bool {
b , exist , err := git_model . FindRenamedBranch ( ctx , repo . Repository . ID , s )
@ -861,6 +871,16 @@ func getRefName(ctx *Base, repo *Repository, pathType RepoRefType) string {
repo . TreePath = strings . Join ( parts [ 1 : ] , "/" )
return parts [ 0 ]
}
if len ( parts ) > 0 && parts [ 0 ] == headRefName {
// HEAD ref points to last default branch commit
commit , err := repo . GitRepo . GetBranchCommit ( repo . Repository . DefaultBranch )
if err != nil {
return ""
}
repo . TreePath = strings . Join ( parts [ 1 : ] , "/" )
return commit . ID . String ( )
}
case RepoRefBlob :
_ , err := repo . GitRepo . GetBlob ( path )
if err != nil {