Skip to content

Commit 112b931

Browse files
committed
Repositories: by default disable all units except code on forks
As 99% of the time forks are used for contributing code only, so not having issues, pull requests and similar can avoid confusion. They can still be enabled in the settings. For this to become upstreamable it would need to at least be an option, if the functionality is considered useful to have.
1 parent 7ddc11d commit 112b931

File tree

5 files changed

+16
-7
lines changed

5 files changed

+16
-7
lines changed

models/unit/unit.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ var (
9090
TypePackages,
9191
}
9292

93+
// ForkRepoUnits contains the default unit types for forks
94+
DefaultForkRepoUnits = []Type{
95+
TypeCode,
96+
}
97+
9398
// NotAllowedDefaultRepoUnits contains units that can't be default
9499
NotAllowedDefaultRepoUnits = []Type{
95100
TypeExternalWiki,

modules/repository/create.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
)
3131

3232
// CreateRepositoryByExample creates a repository for the user/organization.
33-
func CreateRepositoryByExample(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository, overwriteOrAdopt bool) (err error) {
33+
func CreateRepositoryByExample(ctx context.Context, doer, u *user_model.User, repo *repo_model.Repository, overwriteOrAdopt, isFork bool) (err error) {
3434
if err = repo_model.IsUsableRepoName(repo.Name); err != nil {
3535
return err
3636
}
@@ -67,8 +67,12 @@ func CreateRepositoryByExample(ctx context.Context, doer, u *user_model.User, re
6767
}
6868

6969
// insert units for repo
70-
units := make([]repo_model.RepoUnit, 0, len(unit.DefaultRepoUnits))
71-
for _, tp := range unit.DefaultRepoUnits {
70+
default_units := unit.DefaultRepoUnits
71+
if isFork {
72+
default_units = unit.DefaultForkRepoUnits
73+
}
74+
units := make([]repo_model.RepoUnit, 0, len(default_units))
75+
for _, tp := range default_units {
7276
if tp == unit.TypeIssues {
7377
units = append(units, repo_model.RepoUnit{
7478
RepoID: repo.ID,
@@ -212,7 +216,7 @@ func CreateRepository(doer, u *user_model.User, opts CreateRepoOptions) (*repo_m
212216
var rollbackRepo *repo_model.Repository
213217

214218
if err := db.WithTx(db.DefaultContext, func(ctx context.Context) error {
215-
if err := CreateRepositoryByExample(ctx, doer, u, repo, false); err != nil {
219+
if err := CreateRepositoryByExample(ctx, doer, u, repo, false, false); err != nil {
216220
return err
217221
}
218222

modules/repository/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ func GenerateRepository(ctx context.Context, doer, owner *user_model.User, templ
319319
TrustModel: templateRepo.TrustModel,
320320
}
321321

322-
if err = CreateRepositoryByExample(ctx, doer, owner, generateRepo, false); err != nil {
322+
if err = CreateRepositoryByExample(ctx, doer, owner, generateRepo, false, false); err != nil {
323323
return nil, err
324324
}
325325

services/repository/adopt.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func AdoptRepository(doer, u *user_model.User, opts repo_module.CreateRepoOption
6767
}
6868
}
6969

70-
if err := repo_module.CreateRepositoryByExample(ctx, doer, u, repo, true); err != nil {
70+
if err := repo_module.CreateRepositoryByExample(ctx, doer, u, repo, true, false); err != nil {
7171
return err
7272
}
7373
if err := adoptRepository(ctx, repoPath, doer, repo, opts); err != nil {

services/repository/fork.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
119119
}()
120120

121121
err = db.WithTx(ctx, func(txCtx context.Context) error {
122-
if err = repo_module.CreateRepositoryByExample(txCtx, doer, owner, repo, false); err != nil {
122+
if err = repo_module.CreateRepositoryByExample(txCtx, doer, owner, repo, false, true); err != nil {
123123
return err
124124
}
125125

0 commit comments

Comments
 (0)