Add a new config option to enable / disable the automatic watching of repos for new repositories and if a user is added to a team. Fixes #653 Signed-off-by: Sebastian Sauer <sauer.sebastian@gmail.com>tags/v1.9.0-dev
@@ -368,6 +368,10 @@ DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true | |||
NO_REPLY_ADDRESS = noreply.example.org | |||
; Show Registration button | |||
SHOW_REGISTRATION_BUTTON = true | |||
; Default value for AutoWatchNewRepos | |||
; When adding a repo to a team or creating a new repo all team members will watch the | |||
; repo automatically if enabled | |||
AUTO_WATCH_NEW_REPOS = true | |||
[webhook] | |||
; Hook task queue length, increase if webhook shooting starts hanging |
@@ -207,6 +207,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. | |||
- `EMAIL_DOMAIN_WHITELIST`: **\<empty\>**: If non-empty, list of domain names that can only be used to register | |||
on this instance. | |||
- `SHOW_REGISTRATION_BUTTON`: **! DISABLE\_REGISTRATION**: Show Registration Button | |||
- `AUTO_WATCH_NEW_REPOS`: **true** Enable this to let all organisation users watch new repos when they are created | |||
## Webhook (`webhook`) | |||
@@ -11,6 +11,8 @@ import ( | |||
"strings" | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/setting" | |||
"github.com/go-xorm/xorm" | |||
) | |||
@@ -123,14 +125,18 @@ func (t *Team) addRepository(e Engine, repo *Repository) (err error) { | |||
return fmt.Errorf("recalculateAccesses: %v", err) | |||
} | |||
if err = t.getMembers(e); err != nil { | |||
return fmt.Errorf("getMembers: %v", err) | |||
} | |||
for _, u := range t.Members { | |||
if err = watchRepo(e, u.ID, repo.ID, true); err != nil { | |||
return fmt.Errorf("watchRepo: %v", err) | |||
// Make all team members watch this repo if enabled in global settings | |||
if setting.Service.AutoWatchNewRepos { | |||
if err = t.getMembers(e); err != nil { | |||
return fmt.Errorf("getMembers: %v", err) | |||
} | |||
for _, u := range t.Members { | |||
if err = watchRepo(e, u.ID, repo.ID, true); err != nil { | |||
return fmt.Errorf("watchRepo: %v", err) | |||
} | |||
} | |||
} | |||
return nil | |||
} | |||
@@ -618,9 +624,10 @@ func AddTeamMember(team *Team, userID int64) error { | |||
if err := repo.recalculateTeamAccesses(sess, 0); err != nil { | |||
return err | |||
} | |||
if err = watchRepo(sess, userID, repo.ID, true); err != nil { | |||
return err | |||
if setting.Service.AutoWatchNewRepos { | |||
if err = watchRepo(sess, userID, repo.ID, true); err != nil { | |||
return err | |||
} | |||
} | |||
} | |||
@@ -34,8 +34,8 @@ import ( | |||
"github.com/Unknwon/com" | |||
"github.com/go-xorm/builder" | |||
"github.com/go-xorm/xorm" | |||
"github.com/mcuadros/go-version" | |||
"gopkg.in/ini.v1" | |||
version "github.com/mcuadros/go-version" | |||
ini "gopkg.in/ini.v1" | |||
) | |||
var repoWorkingPool = sync.NewExclusivePool() | |||
@@ -1353,9 +1353,12 @@ func createRepository(e *xorm.Session, doer, u *User, repo *Repository) (err err | |||
} | |||
} | |||
if err = watchRepo(e, doer.ID, repo.ID, true); err != nil { | |||
return fmt.Errorf("watchRepo: %v", err) | |||
} else if err = newRepoAction(e, u, repo); err != nil { | |||
if setting.Service.AutoWatchNewRepos { | |||
if err = watchRepo(e, doer.ID, repo.ID, true); err != nil { | |||
return fmt.Errorf("watchRepo: %v", err) | |||
} | |||
} | |||
if err = newRepoAction(e, u, repo); err != nil { | |||
return fmt.Errorf("newRepoAction: %v", err) | |||
} | |||
@@ -1247,6 +1247,7 @@ var Service struct { | |||
DefaultAllowOnlyContributorsToTrackTime bool | |||
NoReplyAddress string | |||
EnableUserHeatmap bool | |||
AutoWatchNewRepos bool | |||
// OpenID settings | |||
EnableOpenIDSignIn bool | |||
@@ -1281,6 +1282,7 @@ func newService() { | |||
Service.DefaultAllowOnlyContributorsToTrackTime = sec.Key("DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME").MustBool(true) | |||
Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org") | |||
Service.EnableUserHeatmap = sec.Key("ENABLE_USER_HEATMAP").MustBool(true) | |||
Service.AutoWatchNewRepos = sec.Key("AUTO_WATCH_NEW_REPOS").MustBool(true) | |||
sec = Cfg.Section("openid") | |||
Service.EnableOpenIDSignIn = sec.Key("ENABLE_OPENID_SIGNIN").MustBool(!InstallLock) |