|
|
|
@ -157,12 +157,12 @@ func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, * |
|
|
|
|
ctx.ServerError("OpenRepository", err) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
|
defer headGitRepo.Close() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// user should have permission to read baseRepo's codes and pulls, NOT headRepo's
|
|
|
|
|
permBase, err := models.GetUserRepoPermission(baseRepo, ctx.User) |
|
|
|
|
if err != nil { |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.ServerError("GetUserRepoPermission", err) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
@ -173,15 +173,14 @@ func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, * |
|
|
|
|
baseRepo, |
|
|
|
|
permBase) |
|
|
|
|
} |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.NotFound("ParseCompareInfo", nil) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if !isSameRepo { |
|
|
|
|
// user should have permission to read headrepo's codes
|
|
|
|
|
permHead, err := models.GetUserRepoPermission(headRepo, ctx.User) |
|
|
|
|
if err != nil { |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.ServerError("GetUserRepoPermission", err) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
@ -192,23 +191,22 @@ func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, * |
|
|
|
|
headRepo, |
|
|
|
|
permHead) |
|
|
|
|
} |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.NotFound("ParseCompareInfo", nil) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check if head branch is valid.
|
|
|
|
|
headIsCommit := ctx.Repo.GitRepo.IsCommitExist(headBranch) |
|
|
|
|
headIsCommit := headGitRepo.IsCommitExist(headBranch) |
|
|
|
|
headIsBranch := headGitRepo.IsBranchExist(headBranch) |
|
|
|
|
headIsTag := headGitRepo.IsTagExist(headBranch) |
|
|
|
|
if !headIsCommit && !headIsBranch && !headIsTag { |
|
|
|
|
// Check if headBranch is short sha commit hash
|
|
|
|
|
if headCommit, _ := ctx.Repo.GitRepo.GetCommit(headBranch); headCommit != nil { |
|
|
|
|
if headCommit, _ := headGitRepo.GetCommit(headBranch); headCommit != nil { |
|
|
|
|
headBranch = headCommit.ID.String() |
|
|
|
|
ctx.Data["HeadBranch"] = headBranch |
|
|
|
|
headIsCommit = true |
|
|
|
|
} else { |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.NotFound("IsRefExist", nil) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
@ -229,14 +227,12 @@ func ParseCompareInfo(ctx *context.Context) (*models.User, *models.Repository, * |
|
|
|
|
baseRepo, |
|
|
|
|
permBase) |
|
|
|
|
} |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.NotFound("ParseCompareInfo", nil) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
compareInfo, err := headGitRepo.GetCompareInfo(models.RepoPath(baseRepo.Owner.Name, baseRepo.Name), baseBranch, headBranch) |
|
|
|
|
compareInfo, err := headGitRepo.GetCompareInfo(baseRepo.RepoPath(), baseBranch, headBranch) |
|
|
|
|
if err != nil { |
|
|
|
|
headGitRepo.Close() |
|
|
|
|
ctx.ServerError("GetCompareInfo", err) |
|
|
|
|
return nil, nil, nil, nil, "", "" |
|
|
|
|
} |
|
|
|
|