소스 검색

Merge pull request #2663 from Download-Fritz/MirrorForks

#2505 Allow to fork and disallow to create PRs for mirrors.
Unknwon 9 년 전
부모
커밋
2408df3f35
6개의 변경된 파일28개의 추가작업 그리고 16개의 파일을 삭제
  1. 2 2
      cmd/web.go
  2. 11 1
      models/repo.go
  3. 1 1
      modules/middleware/repo.go
  4. 4 4
      routers/repo/issue.go
  5. 1 1
      templates/repo/header.tmpl
  6. 9 7
      templates/repo/settings/options.tmpl

+ 2 - 2
cmd/web.go

@@ -470,7 +470,7 @@ func runWeb(ctx *cli.Context) {
 			m.Post("/delete", repo.DeleteRelease)
 		}, reqRepoAdmin, middleware.RepoRef())
 
-		m.Combo("/compare/*", repo.MustEnablePulls).Get(repo.CompareAndPullRequest).
+		m.Combo("/compare/*", repo.MustAllowPulls).Get(repo.CompareAndPullRequest).
 			Post(bindIgnErr(auth.CreateIssueForm{}), repo.CompareAndPullRequestPost)
 	}, reqSignIn, middleware.RepoAssignment(), repo.MustBeNotBare)
 
@@ -503,7 +503,7 @@ func runWeb(ctx *cli.Context) {
 			m.Get("/commits", middleware.RepoRef(), repo.ViewPullCommits)
 			m.Get("/files", middleware.RepoRef(), repo.ViewPullFiles)
 			m.Post("/merge", reqRepoAdmin, repo.MergePullRequest)
-		}, repo.MustEnablePulls)
+		}, repo.MustAllowPulls)
 
 		m.Group("", func() {
 			m.Get("/src/*", repo.Home)

+ 11 - 1
models/repo.go

@@ -332,7 +332,17 @@ func (repo *Repository) IsOwnedBy(userID int64) bool {
 
 // CanBeForked returns true if repository meets the requirements of being forked.
 func (repo *Repository) CanBeForked() bool {
-	return !repo.IsBare && !repo.IsMirror
+	return !repo.IsBare
+}
+
+// CanEnablePulls returns true if repository meets the requirements of accepting pulls.
+func (repo *Repository) CanEnablePulls() bool {
+	return !repo.IsMirror
+}
+
+// AllowPulls returns true if repository meets the requirements of accepting pulls and has them enabled.
+func (repo *Repository) AllowsPulls() bool {
+	return repo.CanEnablePulls() && repo.EnablePulls;
 }
 
 func (repo *Repository) NextIssueIndex() int64 {

+ 1 - 1
modules/middleware/repo.go

@@ -167,7 +167,7 @@ func RepoAssignment(args ...bool) macaron.Handler {
 		ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner()
 		ctx.Data["IsRepositoryAdmin"] = ctx.Repo.IsAdmin()
 		ctx.Data["IsRepositoryPusher"] = ctx.Repo.IsPusher()
-		ctx.Data["CanPullRequest"] = ctx.Repo.IsAdmin() && repo.BaseRepo != nil && repo.BaseRepo.EnablePulls
+		ctx.Data["CanPullRequest"] = ctx.Repo.IsAdmin() && repo.BaseRepo != nil && repo.BaseRepo.AllowsPulls()
 
 		ctx.Data["DisableSSH"] = setting.DisableSSH
 		ctx.Data["CloneLink"] = repo.CloneLink()

+ 4 - 4
routers/repo/issue.go

@@ -47,9 +47,9 @@ func MustEnableIssues(ctx *middleware.Context) {
 	}
 }
 
-func MustEnablePulls(ctx *middleware.Context) {
-	if !ctx.Repo.Repository.EnablePulls {
-		ctx.Handle(404, "MustEnablePulls", nil)
+func MustAllowPulls(ctx *middleware.Context) {
+	if !ctx.Repo.Repository.AllowsPulls() {
+		ctx.Handle(404, "MustAllowPulls", nil)
 	}
 
 	ctx.Data["HasForkedRepo"] = ctx.IsSigned && ctx.User.HasForkedRepo(ctx.Repo.Repository.ID)
@@ -71,7 +71,7 @@ func RetrieveLabels(ctx *middleware.Context) {
 func Issues(ctx *middleware.Context) {
 	isPullList := ctx.Params(":type") == "pulls"
 	if isPullList {
-		MustEnablePulls(ctx)
+		MustAllowPulls(ctx)
 		if ctx.Written() {
 			return
 		}

+ 1 - 1
templates/repo/header.tmpl

@@ -57,7 +57,7 @@
 					<i class="icon octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span>
 				</a>
 			{{end}}
-			{{if .Repository.EnablePulls}}
+			{{if .Repository.AllowsPulls}}
 				<a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls">
 					<i class="icon octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span>
 				</a>

+ 9 - 7
templates/repo/settings/options.tmpl

@@ -117,15 +117,17 @@
 							<p class="help">{{.i18n.Tr "repo.settings.tracker_url_format_desc" | Str2html}}</p>
 						</div>
 
-						<div class="ui divider"></div>
+						{{if .Repository.CanEnablePulls}}
+							<div class="ui divider"></div>
 
-						<div class="inline field">
-							<label>{{.i18n.Tr "repo.pulls"}}</label>
-							<div class="ui checkbox">
-								<input name="enable_pulls" type="checkbox" {{if .Repository.EnablePulls}}checked{{end}}>
-								<label>{{.i18n.Tr "repo.settings.pulls_desc"}}</label>
+							<div class="inline field">
+								<label>{{.i18n.Tr "repo.pulls"}}</label>
+								<div class="ui checkbox">
+									<input name="enable_pulls" type="checkbox" {{if .Repository.EnablePulls}}checked{{end}}>
+									<label>{{.i18n.Tr "repo.settings.pulls_desc"}}</label>
+								</div>
 							</div>
-						</div>
+						{{end}}
 
 						<div class="ui divider"></div>
 						<div class="field">