@@ -462,6 +462,7 @@ issues.label_deletion_success = Label has been deleted successfully! | |||
pulls.compare_changes = Compare Changes | |||
pulls.compare_changes_desc = Compare two branches and make a pull request for changes. | |||
pulls.no_results = No results found. | |||
pulls.create = Create Pull Request | |||
milestones.new = New Milestone | |||
milestones.open_tab = %d Open |
@@ -40,7 +40,7 @@ type RepoContext struct { | |||
BranchName string | |||
TagName string | |||
TreeName string | |||
CommitId string | |||
CommitID string | |||
RepoLink string | |||
CloneLink models.CloneLink | |||
CommitsCount int |
@@ -118,7 +118,7 @@ func RepoRef() macaron.Handler { | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
ctx.Repo.CommitID = ctx.Repo.Commit.Id.String() | |||
ctx.Repo.IsBranch = true | |||
} else { | |||
@@ -149,7 +149,7 @@ func RepoRef() macaron.Handler { | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
ctx.Repo.CommitID = ctx.Repo.Commit.Id.String() | |||
} else if ctx.Repo.GitRepo.IsTagExist(refName) { | |||
ctx.Repo.IsTag = true | |||
@@ -158,10 +158,10 @@ func RepoRef() macaron.Handler { | |||
ctx.Handle(500, "GetCommitOfTag", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
ctx.Repo.CommitID = ctx.Repo.Commit.Id.String() | |||
} else if len(refName) == 40 { | |||
ctx.Repo.IsCommit = true | |||
ctx.Repo.CommitId = refName | |||
ctx.Repo.CommitID = refName | |||
ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommit(refName) | |||
if err != nil { | |||
@@ -176,7 +176,7 @@ func RepoRef() macaron.Handler { | |||
ctx.Repo.BranchName = refName | |||
ctx.Data["BranchName"] = ctx.Repo.BranchName | |||
ctx.Data["CommitId"] = ctx.Repo.CommitId | |||
ctx.Data["CommitID"] = ctx.Repo.CommitID | |||
ctx.Data["IsBranch"] = ctx.Repo.IsBranch | |||
ctx.Data["IsTag"] = ctx.Repo.IsTag | |||
ctx.Data["IsCommit"] = ctx.Repo.IsCommit | |||
@@ -375,7 +375,7 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler { | |||
} | |||
ctx.Data["BranchName"] = ctx.Repo.BranchName | |||
ctx.Data["CommitId"] = ctx.Repo.CommitId | |||
ctx.Data["CommitID"] = ctx.Repo.CommitID | |||
userAgent := ctx.Req.Header.Get("User-Agent") | |||
ua := user_agent.New(userAgent) |
@@ -193,12 +193,12 @@ func Diff(ctx *middleware.Context) { | |||
userName := ctx.Repo.Owner.Name | |||
repoName := ctx.Repo.Repository.Name | |||
commitId := ctx.Repo.CommitId | |||
commitID := ctx.Repo.CommitID | |||
commit := ctx.Repo.Commit | |||
commit.CommitMessage = commit.CommitMessage | |||
diff, err := models.GetDiffCommit(models.RepoPath(userName, repoName), | |||
commitId, setting.Git.MaxGitDiffLines) | |||
commitID, setting.Git.MaxGitDiffLines) | |||
if err != nil { | |||
ctx.Handle(404, "GetDiffCommit", err) | |||
return | |||
@@ -236,17 +236,17 @@ func Diff(ctx *middleware.Context) { | |||
ctx.Data["Username"] = userName | |||
ctx.Data["Reponame"] = repoName | |||
ctx.Data["IsImageFile"] = isImageFile | |||
ctx.Data["Title"] = commit.Summary() + " · " + base.ShortSha(commitId) | |||
ctx.Data["Title"] = commit.Summary() + " · " + base.ShortSha(commitID) | |||
ctx.Data["Commit"] = commit | |||
ctx.Data["Author"] = models.ValidateCommitWithEmail(commit) | |||
ctx.Data["Diff"] = diff | |||
ctx.Data["Parents"] = parents | |||
ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 | |||
ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", commitId) | |||
ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", commitID) | |||
if commit.ParentCount() > 0 { | |||
ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", parents[0]) | |||
} | |||
ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitId) | |||
ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitID) | |||
ctx.HTML(200, DIFF) | |||
} | |||
@@ -255,17 +255,17 @@ func CompareDiff(ctx *middleware.Context) { | |||
ctx.Data["IsDiffCompare"] = true | |||
userName := ctx.Repo.Owner.Name | |||
repoName := ctx.Repo.Repository.Name | |||
beforeCommitId := ctx.Params(":before") | |||
afterCommitId := ctx.Params(":after") | |||
beforeCommitID := ctx.Params(":before") | |||
afterCommitID := ctx.Params(":after") | |||
commit, err := ctx.Repo.GitRepo.GetCommit(afterCommitId) | |||
commit, err := ctx.Repo.GitRepo.GetCommit(afterCommitID) | |||
if err != nil { | |||
ctx.Handle(404, "GetCommit", err) | |||
return | |||
} | |||
diff, err := models.GetDiffRange(models.RepoPath(userName, repoName), beforeCommitId, | |||
afterCommitId, setting.Git.MaxGitDiffLines) | |||
diff, err := models.GetDiffRange(models.RepoPath(userName, repoName), beforeCommitID, | |||
afterCommitID, setting.Git.MaxGitDiffLines) | |||
if err != nil { | |||
ctx.Handle(404, "GetDiffRange", err) | |||
return | |||
@@ -290,7 +290,7 @@ func CompareDiff(ctx *middleware.Context) { | |||
return isImage | |||
} | |||
commits, err := commit.CommitsBeforeUntil(beforeCommitId) | |||
commits, err := commit.CommitsBeforeUntil(beforeCommitID) | |||
if err != nil { | |||
ctx.Handle(500, "CommitsBeforeUntil", err) | |||
return | |||
@@ -299,17 +299,17 @@ func CompareDiff(ctx *middleware.Context) { | |||
ctx.Data["Commits"] = commits | |||
ctx.Data["CommitCount"] = commits.Len() | |||
ctx.Data["BeforeCommitId"] = beforeCommitId | |||
ctx.Data["AfterCommitId"] = afterCommitId | |||
ctx.Data["BeforeCommitID"] = beforeCommitID | |||
ctx.Data["AfterCommitID"] = afterCommitID | |||
ctx.Data["Username"] = userName | |||
ctx.Data["Reponame"] = repoName | |||
ctx.Data["IsImageFile"] = isImageFile | |||
ctx.Data["Title"] = "Comparing " + base.ShortSha(beforeCommitId) + "..." + base.ShortSha(afterCommitId) + " · " + userName + "/" + repoName | |||
ctx.Data["Title"] = "Comparing " + base.ShortSha(beforeCommitID) + "..." + base.ShortSha(afterCommitID) + " · " + userName + "/" + repoName | |||
ctx.Data["Commit"] = commit | |||
ctx.Data["Diff"] = diff | |||
ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 | |||
ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", afterCommitId) | |||
ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", beforeCommitId) | |||
ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", afterCommitId) | |||
ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", afterCommitID) | |||
ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", beforeCommitID) | |||
ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", afterCommitID) | |||
ctx.HTML(200, DIFF) | |||
} |
@@ -190,39 +190,46 @@ func renderAttachmentSettings(ctx *middleware.Context) { | |||
ctx.Data["AttachmentMaxFiles"] = setting.AttachmentMaxFiles | |||
} | |||
func RetrieveRepoMetas(ctx *middleware.Context, repo *models.Repository) []*models.Label { | |||
if !ctx.Repo.IsAdmin() { | |||
return nil | |||
} | |||
labels, err := models.GetLabelsByRepoID(repo.ID) | |||
if err != nil { | |||
ctx.Handle(500, "GetLabelsByRepoID: %v", err) | |||
return nil | |||
} | |||
ctx.Data["Labels"] = labels | |||
ctx.Data["OpenMilestones"], err = models.GetMilestones(repo.ID, -1, false) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestones: %v", err) | |||
return nil | |||
} | |||
ctx.Data["ClosedMilestones"], err = models.GetMilestones(repo.ID, -1, true) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestones: %v", err) | |||
return nil | |||
} | |||
ctx.Data["Assignees"], err = repo.GetAssignees() | |||
if err != nil { | |||
ctx.Handle(500, "GetAssignees: %v", err) | |||
return nil | |||
} | |||
return labels | |||
} | |||
func NewIssue(ctx *middleware.Context) { | |||
ctx.Data["Title"] = ctx.Tr("repo.issues.new") | |||
ctx.Data["PageIsIssueList"] = true | |||
ctx.Data["RequireDropzone"] = true | |||
renderAttachmentSettings(ctx) | |||
if ctx.Repo.IsAdmin() { | |||
var ( | |||
repo = ctx.Repo.Repository | |||
err error | |||
) | |||
ctx.Data["Labels"], err = models.GetLabelsByRepoID(repo.ID) | |||
if err != nil { | |||
ctx.Handle(500, "GetLabelsByRepoID: %v", err) | |||
return | |||
} | |||
ctx.Data["OpenMilestones"], err = models.GetMilestones(repo.ID, -1, false) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestones: %v", err) | |||
return | |||
} | |||
ctx.Data["ClosedMilestones"], err = models.GetMilestones(repo.ID, -1, true) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestones: %v", err) | |||
return | |||
} | |||
ctx.Data["Assignees"], err = repo.GetAssignees() | |||
if err != nil { | |||
ctx.Handle(500, "GetAssignees: %v", err) | |||
return | |||
} | |||
RetrieveRepoMetas(ctx, ctx.Repo.Repository) | |||
if ctx.Written() { | |||
return | |||
} | |||
ctx.HTML(200, ISSUE_NEW) | |||
@@ -240,16 +247,18 @@ func NewIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) { | |||
milestoneID int64 | |||
assigneeID int64 | |||
attachments []string | |||
err error | |||
) | |||
if ctx.Repo.IsAdmin() { | |||
labels := RetrieveRepoMetas(ctx, repo) | |||
if ctx.Written() { | |||
return | |||
} | |||
// Check labels. | |||
labelIDs = base.StringsToInt64s(strings.Split(form.LabelIDs, ",")) | |||
labelIDMark := base.Int64sToMap(labelIDs) | |||
labels, err := models.GetLabelsByRepoID(repo.ID) | |||
if err != nil { | |||
ctx.Handle(500, "GetLabelsByRepoID: %v", err) | |||
return | |||
} | |||
hasSelected := false | |||
for i := range labels { | |||
if labelIDMark[labels[i].ID] { | |||
@@ -264,16 +273,6 @@ func NewIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) { | |||
// Check milestone. | |||
milestoneID = form.MilestoneID | |||
if milestoneID > 0 { | |||
ctx.Data["OpenMilestones"], err = models.GetMilestones(repo.ID, -1, false) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestones: %v", err) | |||
return | |||
} | |||
ctx.Data["ClosedMilestones"], err = models.GetMilestones(repo.ID, -1, true) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestones: %v", err) | |||
return | |||
} | |||
ctx.Data["Milestone"], err = repo.GetMilestoneByID(milestoneID) | |||
if err != nil { | |||
ctx.Handle(500, "GetMilestoneByID: %v", err) | |||
@@ -285,11 +284,6 @@ func NewIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) { | |||
// Check assignee. | |||
assigneeID = form.AssigneeID | |||
if assigneeID > 0 { | |||
ctx.Data["Assignees"], err = repo.GetAssignees() | |||
if err != nil { | |||
ctx.Handle(500, "GetAssignees: %v", err) | |||
return | |||
} | |||
ctx.Data["Assignee"], err = repo.GetAssigneeByID(assigneeID) | |||
if err != nil { | |||
ctx.Handle(500, "GetAssigneeByID: %v", err) |
@@ -99,15 +99,13 @@ func ForkPost(ctx *middleware.Context, form auth.CreateRepoForm) { | |||
repo, err := models.ForkRepository(ctxUser, forkRepo, form.RepoName, form.Description) | |||
if err != nil { | |||
ctx.Data["Err_RepoName"] = true | |||
switch { | |||
case models.IsErrRepoAlreadyExist(err): | |||
ctx.Data["Err_RepoName"] = true | |||
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_has_same_repo"), FORK, &form) | |||
case models.IsErrNameReserved(err): | |||
ctx.Data["Err_RepoName"] = true | |||
ctx.RenderWithErr(ctx.Tr("repo.form.name_reserved", err.(models.ErrNameReserved).Name), FORK, &form) | |||
case models.IsErrNamePatternNotAllowed(err): | |||
ctx.Data["Err_RepoName"] = true | |||
ctx.RenderWithErr(ctx.Tr("repo.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), FORK, &form) | |||
default: | |||
ctx.Handle(500, "ForkPost", err) | |||
@@ -120,7 +118,12 @@ func ForkPost(ctx *middleware.Context, form auth.CreateRepoForm) { | |||
} | |||
func CompareAndPullRequest(ctx *middleware.Context) { | |||
// Get compare information. | |||
ctx.Data["Title"] = ctx.Tr("repo.pulls.compare_changes") | |||
ctx.Data["PageIsComparePull"] = true | |||
repo := ctx.Repo.Repository | |||
// Get compare branch information. | |||
infos := strings.Split(ctx.Params("*"), "...") | |||
if len(infos) != 2 { | |||
ctx.Handle(404, "CompareAndPullRequest", nil) | |||
@@ -144,7 +147,7 @@ func CompareAndPullRequest(ctx *middleware.Context) { | |||
// TODO: add organization support | |||
// Check if current user has fork of repository. | |||
headRepo, has := models.HasForkedRepo(ctx.User.Id, ctx.Repo.Repository.ID) | |||
headRepo, has := models.HasForkedRepo(ctx.User.Id, repo.ID) | |||
if !has { | |||
ctx.Handle(404, "HasForkedRepo", nil) | |||
return | |||
@@ -162,6 +165,14 @@ func CompareAndPullRequest(ctx *middleware.Context) { | |||
} | |||
ctx.Data["HeadBranches"] = headBranches | |||
// Setup information for new form. | |||
RetrieveRepoMetas(ctx, ctx.Repo.Repository) | |||
if ctx.Written() { | |||
return | |||
} | |||
// Get diff information. | |||
ctx.HTML(200, COMPARE_PULL) | |||
} | |||
@@ -10,7 +10,7 @@ | |||
</form> | |||
</div> | |||
{{else if .IsDiffCompare}} | |||
<a href="{{$.RepoLink}}/commit/{{.BeforeCommitId}}" class="ui green sha label">{{ShortSha .BeforeCommitId}}</a> ... <a href="{{$.RepoLink}}/commit/{{.AfterCommitId}}" class="ui green sha label">{{ShortSha .AfterCommitId}}</a> | |||
<a href="{{$.RepoLink}}/commit/{{.BeforeCommitID}}" class="ui green sha label">{{ShortSha .BeforeCommitID}}</a> ... <a href="{{$.RepoLink}}/commit/{{.AfterCommitID}}" class="ui green sha label">{{ShortSha .AfterCommitID}}</a> | |||
{{end}} | |||
</h4> | |||
<div class="ui attached table segment"> |
@@ -24,6 +24,7 @@ | |||
<span class="text grey" id="authored-time">{{TimeSince .Commit.Author.When $.Lang}}</span> | |||
<div class="ui right"> | |||
<div class="ui horizontal list"> | |||
{{if .Parents}} | |||
<div class="item"> | |||
{{.i18n.Tr "repo.diff.parent"}} | |||
</div> | |||
@@ -32,8 +33,9 @@ | |||
<a class="ui blue sha label" href="{{$.RepoLink}}/commit/{{.}}">{{ShortSha .}}</a> | |||
{{end}} | |||
</div> | |||
{{end}} | |||
<div class="item">{{.i18n.Tr "repo.diff.commit"}}</div> | |||
<div class="item"><span class="ui blue sha label">{{ShortSha .CommitId}}</span></div> | |||
<div class="item"><span class="ui blue sha label">{{ShortSha .CommitID}}</span></div> | |||
</div> | |||
</div> | |||
</div> |
@@ -18,7 +18,11 @@ | |||
{{template "repo/issue/comment_tab" .}} | |||
<div class="text right"> | |||
<button class="ui green button"> | |||
{{if .PageIsComparePull}} | |||
{{.i18n.Tr "repo.pulls.create"}} | |||
{{else}} | |||
{{.i18n.Tr "repo.issues.create"}} | |||
{{end}} | |||
</button> | |||
</div> | |||
</div> |
@@ -13,7 +13,7 @@ | |||
{{end}} | |||
{{if not .ReadmeInList}} | |||
{{if not .IsCommit}} | |||
<a class="right" href="{{.RepoLink}}/src/{{.CommitId}}/{{EscapePound .TreeName}}"> | |||
<a class="right" href="{{.RepoLink}}/src/{{.CommitID}}/{{EscapePound .TreeName}}"> | |||
<button class="btn btn-medium btn-gray btn-right-radius btn-comb">{{.i18n.Tr "repo.file_permalink"}}</button> | |||
</a> | |||
{{end}} |