Add option to disable automatic mirror syncing. (#5242)

Setting the interval to 0 will disable to automatic syncing.
pull/5307/head
Jonas Bröms 6 years ago committed by techknowlogick
parent de8f98192b
commit 599adde1bc
  1. 5
      models/repo_mirror.go
  2. 2
      options/locale/locale_en-US.ini
  3. 6
      routers/repo/setting.go

@ -63,7 +63,11 @@ func (m *Mirror) AfterLoad(session *xorm.Session) {
// ScheduleNextUpdate calculates and sets next update time. // ScheduleNextUpdate calculates and sets next update time.
func (m *Mirror) ScheduleNextUpdate() { func (m *Mirror) ScheduleNextUpdate() {
if m.Interval != 0 {
m.NextUpdateUnix = util.TimeStampNow().AddDuration(m.Interval) m.NextUpdateUnix = util.TimeStampNow().AddDuration(m.Interval)
} else {
m.NextUpdateUnix = 0
}
} }
func remoteAddress(repoPath string) (string, error) { func remoteAddress(repoPath string) (string, error) {
@ -302,6 +306,7 @@ func MirrorUpdate() {
if err := x. if err := x.
Where("next_update_unix<=?", time.Now().Unix()). Where("next_update_unix<=?", time.Now().Unix()).
And("next_update_unix!=0").
Iterate(new(Mirror), func(idx int, bean interface{}) error { Iterate(new(Mirror), func(idx int, bean interface{}) error {
m := bean.(*Mirror) m := bean.(*Mirror)
if m.Repo == nil { if m.Repo == nil {

@ -524,7 +524,7 @@ create_repo = Create Repository
default_branch = Default Branch default_branch = Default Branch
mirror_prune = Prune mirror_prune = Prune
mirror_prune_desc = Remove obsolete remote-tracking references mirror_prune_desc = Remove obsolete remote-tracking references
mirror_interval = Mirror Interval (valid time units are 'h', 'm', 's') mirror_interval = Mirror Interval (valid time units are 'h', 'm', 's'). 0 to disable automatic sync.
mirror_interval_invalid = The mirror interval is not valid. mirror_interval_invalid = The mirror interval is not valid.
mirror_address = Clone From URL mirror_address = Clone From URL
mirror_address_desc = Include any required authorization credentials in the URL. mirror_address_desc = Include any required authorization credentials in the URL.

@ -117,12 +117,16 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
} }
interval, err := time.ParseDuration(form.Interval) interval, err := time.ParseDuration(form.Interval)
if err != nil || interval < setting.Mirror.MinInterval { if err != nil && (interval != 0 || interval < setting.Mirror.MinInterval) {
ctx.RenderWithErr(ctx.Tr("repo.mirror_interval_invalid"), tplSettingsOptions, &form) ctx.RenderWithErr(ctx.Tr("repo.mirror_interval_invalid"), tplSettingsOptions, &form)
} else { } else {
ctx.Repo.Mirror.EnablePrune = form.EnablePrune ctx.Repo.Mirror.EnablePrune = form.EnablePrune
ctx.Repo.Mirror.Interval = interval ctx.Repo.Mirror.Interval = interval
if interval != 0 {
ctx.Repo.Mirror.NextUpdateUnix = util.TimeStampNow().AddDuration(interval) ctx.Repo.Mirror.NextUpdateUnix = util.TimeStampNow().AddDuration(interval)
} else {
ctx.Repo.Mirror.NextUpdateUnix = 0
}
if err := models.UpdateMirror(ctx.Repo.Mirror); err != nil { if err := models.UpdateMirror(ctx.Repo.Mirror); err != nil {
ctx.RenderWithErr(ctx.Tr("repo.mirror_interval_invalid"), tplSettingsOptions, &form) ctx.RenderWithErr(ctx.Tr("repo.mirror_interval_invalid"), tplSettingsOptions, &form)
return return

Loading…
Cancel
Save