From 245089b9c9af02776db98e558858c0ee9c548503 Mon Sep 17 00:00:00 2001 From: zeripath Date: Thu, 11 Apr 2019 21:31:17 +0100 Subject: [PATCH] Prevent server 500 on compare branches with no common history (#6555) (#6558) * Prevent server 500 on compare branches with no common history (#6555) * Update code.gitea.io/git module --- Gopkg.lock | 4 ++-- options/locale/locale_en-US.ini | 1 + templates/repo/commits_table.tmpl | 12 ++++++++---- templates/repo/pulls/compare.tmpl | 3 +++ vendor/code.gitea.io/git/hook.go | 13 +++++++++++-- vendor/code.gitea.io/git/repo_pull.go | 27 ++++++++++++++++----------- 6 files changed, 41 insertions(+), 19 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 6a97f8915..42b4a3ae9 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -3,11 +3,11 @@ [[projects]] branch = "master" - digest = "1:e1fa64238b0a2dbf1edf98c4af8d1b8cb65179e286d7f28006b50fa9f508ee9d" + digest = "1:c298eea5ff7f6ab40cda6fe75d2224e2dd271941abe2f66276063b39e43e5687" name = "code.gitea.io/git" packages = ["."] pruneopts = "NUT" - revision = "74d7c14dd4a3ed9c5def0dc3c1aeede399ddc5c5" + revision = "63b74d438b29bb272fa9b4010abe3f50a832e7ef" [[projects]] branch = "master" diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 6662400ad..0dc884896 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -683,6 +683,7 @@ editor.cannot_commit_to_protected_branch = Cannot commit to protected branch '%s commits.desc = Browse source code change history. commits.commits = Commits +commits.no_commits = No commits in common. '%s' and '%s' have entirely different histories. commits.search = Search commits… commits.find = Search commits.search_all = All Branches diff --git a/templates/repo/commits_table.tmpl b/templates/repo/commits_table.tmpl index 53c2f98f4..55c550ae9 100644 --- a/templates/repo/commits_table.tmpl +++ b/templates/repo/commits_table.tmpl @@ -1,9 +1,13 @@

-
- {{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}} {{if .Branch}}({{.Branch}}){{end}} +
+ {{if or .PageIsCommits (gt .CommitCount 0)}} + {{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}} {{if .Branch}}({{.Branch}}){{end}} + {{else}} + {{.i18n.Tr "repo.commits.no_commits" $.BaseBranch $.HeadBranch }} {{if .Branch}}({{.Branch}}){{end}} + {{end}}
-
+
{{if .PageIsCommits}}

-{{if .Commits}} +{{if and .Commits (gt .CommitCount 0)}}
diff --git a/templates/repo/pulls/compare.tmpl b/templates/repo/pulls/compare.tmpl index d2e00ace3..2296acf1d 100644 --- a/templates/repo/pulls/compare.tmpl +++ b/templates/repo/pulls/compare.tmpl @@ -54,6 +54,9 @@
{{.i18n.Tr "repo.pulls.has_pull_request" $.RepoLink $.RepoRelPath .PullRequest.Index | Safe}}
+ {{else if eq .CommitCount 0 }} + {{template "repo/commits_table" .}} + {{template "repo/diff/box" .}} {{else}} {{template "repo/issue/new_form" .}} {{template "repo/commits_table" .}} diff --git a/vendor/code.gitea.io/git/hook.go b/vendor/code.gitea.io/git/hook.go index afed623e6..18c00b583 100644 --- a/vendor/code.gitea.io/git/hook.go +++ b/vendor/code.gitea.io/git/hook.go @@ -82,11 +82,20 @@ func (h *Hook) Name() string { func (h *Hook) Update() error { if len(strings.TrimSpace(h.Content)) == 0 { if isExist(h.path) { - return os.Remove(h.path) + err := os.Remove(h.path) + if err != nil { + return err + } } + h.IsActive = false return nil } - return ioutil.WriteFile(h.path, []byte(strings.Replace(h.Content, "\r", "", -1)), os.ModePerm) + err := ioutil.WriteFile(h.path, []byte(strings.Replace(h.Content, "\r", "", -1)), os.ModePerm) + if err != nil { + return err + } + h.IsActive = true + return nil } // ListHooks returns a list of Git hooks of given repository. diff --git a/vendor/code.gitea.io/git/repo_pull.go b/vendor/code.gitea.io/git/repo_pull.go index c6d97a6fd..65c541455 100644 --- a/vendor/code.gitea.io/git/repo_pull.go +++ b/vendor/code.gitea.io/git/repo_pull.go @@ -48,17 +48,22 @@ func (repo *Repository) GetPullRequestInfo(basePath, baseBranch, headBranch stri prInfo := new(PullRequestInfo) prInfo.MergeBase, err = repo.GetMergeBase(remoteBranch, headBranch) - if err != nil { - return nil, fmt.Errorf("GetMergeBase: %v", err) - } - - logs, err := NewCommand("log", prInfo.MergeBase+"..."+headBranch, prettyLogFormat).RunInDirBytes(repo.Path) - if err != nil { - return nil, err - } - prInfo.Commits, err = repo.parsePrettyFormatLogToList(logs) - if err != nil { - return nil, fmt.Errorf("parsePrettyFormatLogToList: %v", err) + if err == nil { + // We have a common base + logs, err := NewCommand("log", prInfo.MergeBase+"..."+headBranch, prettyLogFormat).RunInDirBytes(repo.Path) + if err != nil { + return nil, err + } + prInfo.Commits, err = repo.parsePrettyFormatLogToList(logs) + if err != nil { + return nil, fmt.Errorf("parsePrettyFormatLogToList: %v", err) + } + } else { + prInfo.Commits = list.New() + prInfo.MergeBase, err = GetFullCommitID(repo.Path, remoteBranch) + if err != nil { + prInfo.MergeBase = remoteBranch + } } // Count number of changed files.