mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 09:44:21 +00:00 
			
		
		
		
	Support default private when creating or migrating repository (#3239)
* support default private when creating or migrating repository * fix fmt * use string constants on repository default private in app.ini * fix fmt
This commit is contained in:
		@@ -16,6 +16,8 @@ SCRIPT_TYPE = bash
 | 
				
			|||||||
ANSI_CHARSET =
 | 
					ANSI_CHARSET =
 | 
				
			||||||
; Force every new repository to be private
 | 
					; Force every new repository to be private
 | 
				
			||||||
FORCE_PRIVATE = false
 | 
					FORCE_PRIVATE = false
 | 
				
			||||||
 | 
					; Default private when create a new repository, could be: last, private, public. Default is last which means last user repo visiblity.
 | 
				
			||||||
 | 
					DEFAULT_PRIVATE = last
 | 
				
			||||||
; Global maximum creation limit of repository per user, -1 means no limit
 | 
					; Global maximum creation limit of repository per user, -1 means no limit
 | 
				
			||||||
MAX_CREATION_LIMIT = -1
 | 
					MAX_CREATION_LIMIT = -1
 | 
				
			||||||
; Mirror sync queue length, increase if mirror syncing starts hanging
 | 
					; Mirror sync queue length, increase if mirror syncing starts hanging
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
 | 
				
			|||||||
- `SCRIPT_TYPE`: The script type your server supports, usually this is `bash`, but some customers report that they only have `sh`.
 | 
					- `SCRIPT_TYPE`: The script type your server supports, usually this is `bash`, but some customers report that they only have `sh`.
 | 
				
			||||||
- `ANSI_CHARSET`: The default charset for an unrecognized charset.
 | 
					- `ANSI_CHARSET`: The default charset for an unrecognized charset.
 | 
				
			||||||
- `FORCE_PRIVATE`: Force every new repository to be private.
 | 
					- `FORCE_PRIVATE`: Force every new repository to be private.
 | 
				
			||||||
 | 
					- `DEFAULT_PRIVATE`: Default private when create a new repository, could be: `last`, `private` and `public`. Default is last which means last user repo visiblity.
 | 
				
			||||||
- `MAX_CREATION_LIMIT`: Global maximum creation limit of repositories per user, `-1` means no limit.
 | 
					- `MAX_CREATION_LIMIT`: Global maximum creation limit of repositories per user, `-1` means no limit.
 | 
				
			||||||
- `PULL_REQUEST_QUEUE_LENGTH`:exclamation:: Length of pull request patch test queue, make it as large as possible.
 | 
					- `PULL_REQUEST_QUEUE_LENGTH`:exclamation:: Length of pull request patch test queue, make it as large as possible.
 | 
				
			||||||
- `MIRROR_QUEUE_LENGTH`: Patch test queue length, increase if pull request patch testing starts hanging. Defaults to 1000.
 | 
					- `MIRROR_QUEUE_LENGTH`: Patch test queue length, increase if pull request patch testing starts hanging. Defaults to 1000.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ menu:
 | 
				
			|||||||
- `SCRIPT_TYPE`: 服务器支持的Shell类型,通常是 `bash`,但有些服务器也有可能是 `sh`。
 | 
					- `SCRIPT_TYPE`: 服务器支持的Shell类型,通常是 `bash`,但有些服务器也有可能是 `sh`。
 | 
				
			||||||
- `ANSI_CHARSET`: 默认字符编码。
 | 
					- `ANSI_CHARSET`: 默认字符编码。
 | 
				
			||||||
- `FORCE_PRIVATE`: 强制所有git工程必须私有。
 | 
					- `FORCE_PRIVATE`: 强制所有git工程必须私有。
 | 
				
			||||||
 | 
					- `DEFAULT_PRIVATE`: 默认创建的git工程为私有。 可以是`last`, `private` 或 `public`。默认值是 `last`表示用户最后创建的Repo的选择。
 | 
				
			||||||
- `MAX_CREATION_LIMIT`: 全局最大每个用户创建的git工程数目, `-1` 表示没限制。
 | 
					- `MAX_CREATION_LIMIT`: 全局最大每个用户创建的git工程数目, `-1` 表示没限制。
 | 
				
			||||||
- `PULL_REQUEST_QUEUE_LENGTH`: 小心:合并请求测试队列的长度,尽量放大。
 | 
					- `PULL_REQUEST_QUEUE_LENGTH`: 小心:合并请求测试队列的长度,尽量放大。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,13 @@ type MarkupParser struct {
 | 
				
			|||||||
	IsInputFile    bool
 | 
						IsInputFile    bool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// enumerates all the policy repository creating
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						RepoCreatingLastUserVisibility = "last"
 | 
				
			||||||
 | 
						RepoCreatingPrivate            = "private"
 | 
				
			||||||
 | 
						RepoCreatingPublic             = "public"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// settings
 | 
					// settings
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// AppVer settings
 | 
						// AppVer settings
 | 
				
			||||||
@@ -180,6 +187,7 @@ var (
 | 
				
			|||||||
	Repository = struct {
 | 
						Repository = struct {
 | 
				
			||||||
		AnsiCharset            string
 | 
							AnsiCharset            string
 | 
				
			||||||
		ForcePrivate           bool
 | 
							ForcePrivate           bool
 | 
				
			||||||
 | 
							DefaultPrivate         string
 | 
				
			||||||
		MaxCreationLimit       int
 | 
							MaxCreationLimit       int
 | 
				
			||||||
		MirrorQueueLength      int
 | 
							MirrorQueueLength      int
 | 
				
			||||||
		PullRequestQueueLength int
 | 
							PullRequestQueueLength int
 | 
				
			||||||
@@ -209,6 +217,7 @@ var (
 | 
				
			|||||||
	}{
 | 
						}{
 | 
				
			||||||
		AnsiCharset:            "",
 | 
							AnsiCharset:            "",
 | 
				
			||||||
		ForcePrivate:           false,
 | 
							ForcePrivate:           false,
 | 
				
			||||||
 | 
							DefaultPrivate:         RepoCreatingLastUserVisibility,
 | 
				
			||||||
		MaxCreationLimit:       -1,
 | 
							MaxCreationLimit:       -1,
 | 
				
			||||||
		MirrorQueueLength:      1000,
 | 
							MirrorQueueLength:      1000,
 | 
				
			||||||
		PullRequestQueueLength: 1000,
 | 
							PullRequestQueueLength: 1000,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,6 +81,19 @@ func checkContextUser(ctx *context.Context, uid int64) *models.User {
 | 
				
			|||||||
	return org
 | 
						return org
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getRepoPrivate(ctx *context.Context) bool {
 | 
				
			||||||
 | 
						switch strings.ToLower(setting.Repository.DefaultPrivate) {
 | 
				
			||||||
 | 
						case setting.RepoCreatingLastUserVisibility:
 | 
				
			||||||
 | 
							return ctx.User.LastRepoVisibility
 | 
				
			||||||
 | 
						case setting.RepoCreatingPrivate:
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						case setting.RepoCreatingPublic:
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return ctx.User.LastRepoVisibility
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create render creating repository page
 | 
					// Create render creating repository page
 | 
				
			||||||
func Create(ctx *context.Context) {
 | 
					func Create(ctx *context.Context) {
 | 
				
			||||||
	if !ctx.User.CanCreateRepo() {
 | 
						if !ctx.User.CanCreateRepo() {
 | 
				
			||||||
@@ -94,7 +107,7 @@ func Create(ctx *context.Context) {
 | 
				
			|||||||
	ctx.Data["Licenses"] = models.Licenses
 | 
						ctx.Data["Licenses"] = models.Licenses
 | 
				
			||||||
	ctx.Data["Readmes"] = models.Readmes
 | 
						ctx.Data["Readmes"] = models.Readmes
 | 
				
			||||||
	ctx.Data["readme"] = "Default"
 | 
						ctx.Data["readme"] = "Default"
 | 
				
			||||||
	ctx.Data["private"] = ctx.User.LastRepoVisibility
 | 
						ctx.Data["private"] = getRepoPrivate(ctx)
 | 
				
			||||||
	ctx.Data["IsForcedPrivate"] = setting.Repository.ForcePrivate
 | 
						ctx.Data["IsForcedPrivate"] = setting.Repository.ForcePrivate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctxUser := checkContextUser(ctx, ctx.QueryInt64("org"))
 | 
						ctxUser := checkContextUser(ctx, ctx.QueryInt64("org"))
 | 
				
			||||||
@@ -170,7 +183,7 @@ func CreatePost(ctx *context.Context, form auth.CreateRepoForm) {
 | 
				
			|||||||
// Migrate render migration of repository page
 | 
					// Migrate render migration of repository page
 | 
				
			||||||
func Migrate(ctx *context.Context) {
 | 
					func Migrate(ctx *context.Context) {
 | 
				
			||||||
	ctx.Data["Title"] = ctx.Tr("new_migrate")
 | 
						ctx.Data["Title"] = ctx.Tr("new_migrate")
 | 
				
			||||||
	ctx.Data["private"] = ctx.User.LastRepoVisibility
 | 
						ctx.Data["private"] = getRepoPrivate(ctx)
 | 
				
			||||||
	ctx.Data["IsForcedPrivate"] = setting.Repository.ForcePrivate
 | 
						ctx.Data["IsForcedPrivate"] = setting.Repository.ForcePrivate
 | 
				
			||||||
	ctx.Data["mirror"] = ctx.Query("mirror") == "1"
 | 
						ctx.Data["mirror"] = ctx.Query("mirror") == "1"
 | 
				
			||||||
	ctx.Data["LFSActive"] = setting.LFS.StartServer
 | 
						ctx.Data["LFSActive"] = setting.LFS.StartServer
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user