mirror of https://github.com/gogs/gogs.git
modes/mirror: make Updated unchanged if no new commits fetched (#4341)
After sync mirror, get latest commit date and compare to current repository updated time, only update it if the commit date is newer.pull/4398/head^2
parent
90b9f7e08c
commit
8d0417497b
2
gogs.go
2
gogs.go
|
@ -16,7 +16,7 @@ import (
|
|||
"github.com/gogits/gogs/pkg/setting"
|
||||
)
|
||||
|
||||
const APP_VER = "0.11.5.0406"
|
||||
const APP_VER = "0.11.6.0406"
|
||||
|
||||
func init() {
|
||||
setting.AppVer = APP_VER
|
||||
|
|
|
@ -184,7 +184,7 @@ func (m *Mirror) SaveAddress(addr string) error {
|
|||
return fmt.Errorf("Load: %v", err)
|
||||
}
|
||||
|
||||
cfg.Section("remote \"origin\"").Key("url").SetValue(escapeMirrorCredentials(addr))
|
||||
cfg.Section(`remote "origin"`).Key("url").SetValue(escapeMirrorCredentials(addr))
|
||||
return cfg.SaveToIndent(configPath, "\t")
|
||||
}
|
||||
|
||||
|
@ -320,9 +320,19 @@ func SyncMirrors() {
|
|||
continue
|
||||
}
|
||||
|
||||
// Update repository last updated time
|
||||
if _, err = x.Exec("UPDATE repository SET updated_unix = ? WHERE id = ?", time.Now().Unix(), m.RepoID); err != nil {
|
||||
// Get latest commit date and compare to current repository updated time,
|
||||
// update if latest commit date is newer.
|
||||
commitDate, err := git.GetLatestCommitDate(m.Repo.RepoPath(), "")
|
||||
if err != nil {
|
||||
log.Error(2, "GetLatestCommitDate [%s]: %v", m.RepoID, err)
|
||||
continue
|
||||
} else if commitDate.Before(m.Repo.Updated) {
|
||||
continue
|
||||
}
|
||||
|
||||
if _, err = x.Exec("UPDATE repository SET updated_unix = ? WHERE id = ?", commitDate.Unix(), m.RepoID); err != nil {
|
||||
log.Error(2, "Update repository 'updated_unix' [%s]: %v", m.RepoID, err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.11.5.0406
|
||||
0.11.6.0406
|
|
@ -10,7 +10,7 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
const _VERSION = "0.6.0"
|
||||
const _VERSION = "0.6.1"
|
||||
|
||||
func Version() string {
|
||||
return _VERSION
|
||||
|
|
|
@ -278,3 +278,18 @@ func GetRepoSize(repoPath string) (*CountObject, error) {
|
|||
|
||||
return countObject, nil
|
||||
}
|
||||
|
||||
// GetLatestCommitDate returns the date of latest commit of repository.
|
||||
// If branch is empty, it returns the latest commit across all branches.
|
||||
func GetLatestCommitDate(repoPath, branch string) (time.Time, error) {
|
||||
cmd := NewCommand("for-each-ref", "--count=1", "--sort=-committerdate", "--format=%(committerdate:iso8601)")
|
||||
if len(branch) > 0 {
|
||||
cmd.AddArguments("refs/heads/" + branch)
|
||||
}
|
||||
stdout, err := cmd.RunInDir(repoPath)
|
||||
if err != nil {
|
||||
return time.Time{}, err
|
||||
}
|
||||
|
||||
return time.Parse("2006-01-02 15:04:05 -0700", strings.TrimSpace(stdout))
|
||||
}
|
||||
|
|
|
@ -177,10 +177,10 @@
|
|||
"revisionTime": "2016-08-10T03:50:02Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "XT0fyELKMKgb4XeMAtIrmi4SetM=",
|
||||
"checksumSHA1": "OmDPIa3NWPpl/rItpYC/Ig/m/gI=",
|
||||
"path": "github.com/gogits/git-module",
|
||||
"revision": "2a496cad1f36aed60b14844b33b68eb3edfc2718",
|
||||
"revisionTime": "2017-04-04T05:59:12Z"
|
||||
"revision": "1ebf9618c02c9480312bb55bccda7886c8d4caac",
|
||||
"revisionTime": "2017-04-07T00:57:10Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "D2kVXl0QpIw6t3891Sl7IM9wL+w=",
|
||||
|
|
Loading…
Reference in New Issue