From 5cf20579d2fd8aaf089276ea92235edf5a50d546 Mon Sep 17 00:00:00 2001 From: avadesian Date: Mon, 11 Oct 2021 15:22:11 +0800 Subject: [PATCH 1/7] add new feature fetch upstream --- options/locale/locale_en-US.ini | 4 ++++ options/locale/locale_zh-CN.ini | 4 ++++ routers/repo/view.go | 35 +++++++++++++++++++++++++++++++++++ templates/repo/home.tmpl | 11 +++++++++++ 4 files changed, 54 insertions(+) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 50e85ba27..5ea80af77 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1241,6 +1241,10 @@ pulls.reject_count_1 = "%d change request" pulls.reject_count_n = "%d change requests" pulls.waiting_count_1 = "%d waiting review" pulls.waiting_count_n = "%d waiting reviews" +pulls.commits_count_1=This branch is %d commit behind the upstream. +pulls.commits_count_n=This branch is %d commit behind the upstream. +pulls.fetch_upstream=Fetch upstream +pulls.upstream_up_to_date=No new commits to fetch pulls.no_merge_desc = This pull request cannot be merged because all repository merge options are disabled. pulls.no_merge_helper = Enable merge options in the repository settings or merge the pull request manually. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 89a6282e5..3774668bb 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1243,6 +1243,10 @@ pulls.reject_count_1=%d 变更请求 pulls.reject_count_n=%d 变更请求 pulls.waiting_count_1=%d 个正在等待审核 pulls.waiting_count_n=%d 个正在等待审核 +pulls.commits_count_1=当前分支落后上游分支 %d 个提交 +pulls.commits_count_n=当前分支落后上游分支 %d 个提交 +pulls.fetch_upstream=拉取上游更新 +pulls.upstream_up_to_date=上游分支没有新的更新 pulls.no_merge_desc=由于未启用合并选项,此合并请求无法被合并。 pulls.no_merge_helper=在项目设置中启用合并选项或者手工合并请求。 diff --git a/routers/repo/view.go b/routers/repo/view.go index 1546f53b7..8c768c9eb 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -790,6 +790,41 @@ func renderCode(ctx *context.Context) { } } + //如果是fork的仓库 + if ctx.Repo.Repository.IsFork { + //获得fetchUpstream对应的分支参数 + /* + // 1. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headBranch} + // 2. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headOwner}:{:headBranch} + // 3. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headOwner}/{:headRepoName}:{:headBranch} + */ + baseGitRepo, err := git.OpenRepository(ctx.Repo.Repository.BaseRepo.RepoPath()) + if err != nil { + log.Error("error open baseRepo:%s",ctx.Repo.Repository.BaseRepo.RepoPath()) + } + defer baseGitRepo.Close() + if _,error:= baseGitRepo.GetBranch(ctx.Repo.BranchName);error==nil{ + //base repo has the same branch, then compare between current repo branch and base repo's branch + compareUrl := ctx.Repo.BranchName + "..." + ctx.Repo.Repository.BaseRepo.OwnerName + "/" + ctx.Repo.Repository.BaseRepo.Name + ":" + ctx.Repo.BranchName + ctx.SetParams("*",compareUrl) + }else{ + //else, compare between current repo branch and base repo's default branch + compareUrl := ctx.Repo.BranchName + "..." + ctx.Repo.Repository.BaseRepo.OwnerName + "/" + ctx.Repo.Repository.BaseRepo.Name + ":" + ctx.Repo.Repository.BaseRepo.DefaultBranch + ctx.SetParams("*",compareUrl) + } + + _, _, headGitRepo, compareInfo, _, _ := ParseCompareInfo(ctx) + defer headGitRepo.Close() + if compareInfo!= nil { + if compareInfo.Commits!=nil { + log.Info("compareInfoCommits数量:%d",compareInfo.Commits.Len()) + ctx.Data["FetchUpstreamCnt"] = compareInfo.Commits.Len() + }else{ + log.Info("compareInfo nothing different") + ctx.Data["FetchUpstreamCnt"] = 0 + } + } + } ctx.Data["Paths"] = paths ctx.Data["TreeLink"] = treeLink ctx.Data["TreeNames"] = treeNames diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index b48efd498..2f123e473 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -119,6 +119,17 @@ + {{if and .Repository.IsFork .PullRequestCtx.Allowed}} + {{if gt .FetchUpstreamCnt 0 }} + + + + {{else}} + + + + {{end}} + {{end}} {{end}} {{else}} From 01ccc47f55c471ee8ec13b58e391fa1ff68c5950 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Tue, 12 Oct 2021 12:37:50 +0800 Subject: [PATCH 2/7] fix issue fix-327 --- templates/repo/issue/list.tmpl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/templates/repo/issue/list.tmpl b/templates/repo/issue/list.tmpl index a99205eea..9c0be9a71 100644 --- a/templates/repo/issue/list.tmpl +++ b/templates/repo/issue/list.tmpl @@ -4,18 +4,19 @@
-
{{template "repo/issue/search" .}}
{{if not .Repository.IsArchived}}
- {{template "repo/issue/navbar" .}} + {{if .PageIsIssueList}} {{.i18n.Tr "repo.issues.new"}} {{else}} From e16ab13e1b7fe595fa667cd385ad408d62feb205 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Tue, 12 Oct 2021 15:19:43 +0800 Subject: [PATCH 3/7] fix issue #487 --- web_src/js/components/EditTopics.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web_src/js/components/EditTopics.vue b/web_src/js/components/EditTopics.vue index c946dff47..5c452d76a 100644 --- a/web_src/js/components/EditTopics.vue +++ b/web_src/js/components/EditTopics.vue @@ -197,13 +197,13 @@ export default { }) }, postTopic(){ - const patter = /^[\u4e00-\u9fa5a-z0-9][\u4e00-\u9fa5a-zA-Z0-9-]{0,35}$/ + const patter = /^[\u4e00-\u9fa5a-zA-Z0-9][\u4e00-\u9fa5a-zA-Z0-9-]{0,34}$/ let regexp = patter.test(this.input) console.log("regexp",regexp) if(!regexp){ this.$notify({ - message: '主题必须以中文、字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符', + message: '标签名必须以中文、字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符', duration: 3000, type:'error' }); From 0726f97ceb30faf9e828c173ef01adee11ca5431 Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Tue, 12 Oct 2021 17:29:27 +0800 Subject: [PATCH 4/7] fix issue #327 about navbar right --- templates/repo/issue/list.tmpl | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/templates/repo/issue/list.tmpl b/templates/repo/issue/list.tmpl index 9c0be9a71..e7cb8b19f 100644 --- a/templates/repo/issue/list.tmpl +++ b/templates/repo/issue/list.tmpl @@ -3,20 +3,14 @@ {{template "repo/header" .}}
-
- - {{template "repo/issue/navbar" .}} +
{{template "repo/issue/search" .}}
{{if not .Repository.IsArchived}}
- + {{template "repo/issue/navbar" .}} {{if .PageIsIssueList}} {{.i18n.Tr "repo.issues.new"}} {{else}} From 6e660c868eaf4eb4e4b270f7f8a87e46f44c32ab Mon Sep 17 00:00:00 2001 From: avadesian Date: Tue, 12 Oct 2021 17:44:44 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=8B=89=E5=8F=96?= =?UTF-8?q?=E4=B8=8A=E6=B8=B8=E5=88=86=E6=94=AF=E6=9B=B4=E6=96=B0=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- options/locale/locale_en-US.ini | 3 ++- options/locale/locale_zh-CN.ini | 1 + routers/repo/view.go | 41 ++++++++++++++++++++++------------------- templates/repo/home.tmpl | 4 ++++ 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 52e3a50ce..141a6dd65 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -87,7 +87,7 @@ write = Write preview = Preview loading = Loading… -error404_index = Request forbidden by administrative rules +error404_index = Request forbidden by administrative rules error500_index = Internal Server Error error404 = The page you are trying to reach either does not exist or you are not authorized to view it. error500= Sorry, the site has encountered some problems, we are trying to fix the page, please try again later. @@ -1247,6 +1247,7 @@ pulls.commits_count_1=This branch is %d commit behind the upstream. pulls.commits_count_n=This branch is %d commit behind the upstream. pulls.fetch_upstream=Fetch upstream pulls.upstream_up_to_date=No new commits to fetch +pulls.upstream_error=Cannot get upstream info pulls.no_merge_desc = This pull request cannot be merged because all repository merge options are disabled. pulls.no_merge_helper = Enable merge options in the repository settings or merge the pull request manually. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 397bcbdb8..5cb62d823 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1249,6 +1249,7 @@ pulls.commits_count_1=当前分支落后上游分支 %d 个提交 pulls.commits_count_n=当前分支落后上游分支 %d 个提交 pulls.fetch_upstream=拉取上游更新 pulls.upstream_up_to_date=上游分支没有新的更新 +pulls.upstream_error=获取上游分支信息错误 pulls.no_merge_desc=由于未启用合并选项,此合并请求无法被合并。 pulls.no_merge_helper=在项目设置中启用合并选项或者手工合并请求。 diff --git a/routers/repo/view.go b/routers/repo/view.go index 8c768c9eb..0d284c42b 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -799,29 +799,32 @@ func renderCode(ctx *context.Context) { // 3. /{:baseOwner}/{:baseRepoName}/compare/{:baseBranch}...{:headOwner}/{:headRepoName}:{:headBranch} */ baseGitRepo, err := git.OpenRepository(ctx.Repo.Repository.BaseRepo.RepoPath()) + defer baseGitRepo.Close() if err != nil { log.Error("error open baseRepo:%s",ctx.Repo.Repository.BaseRepo.RepoPath()) - } - defer baseGitRepo.Close() - if _,error:= baseGitRepo.GetBranch(ctx.Repo.BranchName);error==nil{ - //base repo has the same branch, then compare between current repo branch and base repo's branch - compareUrl := ctx.Repo.BranchName + "..." + ctx.Repo.Repository.BaseRepo.OwnerName + "/" + ctx.Repo.Repository.BaseRepo.Name + ":" + ctx.Repo.BranchName - ctx.SetParams("*",compareUrl) + ctx.Data["FetchUpstreamCnt"] = -1 // minus value indicates error }else{ - //else, compare between current repo branch and base repo's default branch - compareUrl := ctx.Repo.BranchName + "..." + ctx.Repo.Repository.BaseRepo.OwnerName + "/" + ctx.Repo.Repository.BaseRepo.Name + ":" + ctx.Repo.Repository.BaseRepo.DefaultBranch - ctx.SetParams("*",compareUrl) - } - - _, _, headGitRepo, compareInfo, _, _ := ParseCompareInfo(ctx) - defer headGitRepo.Close() - if compareInfo!= nil { - if compareInfo.Commits!=nil { - log.Info("compareInfoCommits数量:%d",compareInfo.Commits.Len()) - ctx.Data["FetchUpstreamCnt"] = compareInfo.Commits.Len() + if _,error:= baseGitRepo.GetBranch(ctx.Repo.BranchName);error==nil{ + //base repo has the same branch, then compare between current repo branch and base repo's branch + compareUrl := ctx.Repo.BranchName + "..." + ctx.Repo.Repository.BaseRepo.OwnerName + "/" + ctx.Repo.Repository.BaseRepo.Name + ":" + ctx.Repo.BranchName + ctx.SetParams("*",compareUrl) + }else{ + //else, compare between current repo branch and base repo's default branch + compareUrl := ctx.Repo.BranchName + "..." + ctx.Repo.Repository.BaseRepo.OwnerName + "/" + ctx.Repo.Repository.BaseRepo.Name + ":" + ctx.Repo.Repository.BaseRepo.DefaultBranch + ctx.SetParams("*",compareUrl) + } + _, _, headGitRepo, compareInfo, _, _ := ParseCompareInfo(ctx) + defer headGitRepo.Close() + if compareInfo!= nil { + if compareInfo.Commits!=nil { + log.Info("compareInfoCommits数量:%d",compareInfo.Commits.Len()) + ctx.Data["FetchUpstreamCnt"] = compareInfo.Commits.Len() + }else{ + log.Info("compareInfo nothing different") + ctx.Data["FetchUpstreamCnt"] = 0 + } }else{ - log.Info("compareInfo nothing different") - ctx.Data["FetchUpstreamCnt"] = 0 + ctx.Data["FetchUpstreamCnt"] = -1 // minus value indicates error } } } diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index d4a880647..8d52f9115 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -159,6 +159,10 @@ + {{else if lt .FetchUpstreamCnt 0}} + + + {{else}} From b99d5b3ed9d387335c0db74e4fe32714a04fe540 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Wed, 13 Oct 2021 11:37:12 +0800 Subject: [PATCH 6/7] =?UTF-8?q?fix=20428=E5=90=8E=E7=AB=AF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=90=88=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/repo_list.go | 14 ++++++++++++++ routers/home.go | 5 ++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/models/repo_list.go b/models/repo_list.go index 57b6ebbd6..928e1f953 100755 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -166,6 +166,8 @@ type SearchRepoOptions struct { Archived util.OptionalBool // only search topic name TopicOnly bool + //search by Specific TopicName + TopicName string // include description in keyword search IncludeDescription bool // None -> include has milestones AND has no milestone @@ -327,6 +329,18 @@ func SearchRepositoryCondition(opts *SearchRepoOptions) builder.Cond { } cond = cond.And(keywordCond) } + if opts.TopicName != "" { + var subQueryCond = builder.NewCond() + subQueryCond = subQueryCond.Or(builder.Eq{"topic.name": opts.TopicName}) + subQuery := builder.Select("repo_topic.repo_id").From("repo_topic"). + Join("INNER", "topic", "topic.id = repo_topic.topic_id"). + Where(subQueryCond). + GroupBy("repo_topic.repo_id") + + var topicNameCond = builder.In("id", subQuery) + cond = cond.And(topicNameCond) + + } if opts.Fork != util.OptionalBoolNone { cond = cond.And(builder.Eq{"is_fork": opts.Fork == util.OptionalBoolTrue}) diff --git a/routers/home.go b/routers/home.go index a1c07e317..b36501d32 100755 --- a/routers/home.go +++ b/routers/home.go @@ -149,8 +149,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { //todo:support other topics keyword := strings.Trim(ctx.Query("q"), " ") - topicOnly := ctx.QueryBool("topic") - ctx.Data["TopicOnly"] = topicOnly + topic := strings.Trim(ctx.Query("topic"), " ") repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ ListOptions: models.ListOptions{ @@ -164,7 +163,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { OwnerID: opts.OwnerID, AllPublic: true, AllLimited: true, - TopicOnly: topicOnly, + TopicName: topic, IncludeDescription: setting.UI.SearchRepoDescription, }) if err != nil { From aaa476414349cf85832f67eed23c3548426b22c0 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Wed, 13 Oct 2021 15:30:42 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0topic=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/home.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routers/home.go b/routers/home.go index b36501d32..70fea437c 100755 --- a/routers/home.go +++ b/routers/home.go @@ -176,6 +176,8 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { repo.Active = int64(repo.NumIssues) + int64(repo.NumPulls) + int64(repo.NumCommit) } ctx.Data["Keyword"] = keyword + ctx.Data["Topic"] = topic + ctx.Data["Total"] = count ctx.Data["Repos"] = repos ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled