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:
parent
e67b4055f9
commit
529482135c
5 changed files with 28 additions and 2 deletions
|
@ -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 a new issue