aboutsummaryrefslogtreecommitdiff
path: root/models/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go53
1 files changed, 33 insertions, 20 deletions
diff --git a/models/repo.go b/models/repo.go
index 3ea4efc7..65689b6a 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -105,21 +105,18 @@ func NewRepoContext() {
log.Fatal(4, "Gogs requires Git version greater or equal to 1.7.1")
}
- // Check if server has basic git setting and set if not.
- if stdout, stderr, err := process.Exec("NewRepoContext(get setting)", "git", "config", "--get", "user.name"); err != nil || strings.TrimSpace(stdout) == "" {
- // ExitError indicates user.name is not set
- if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" {
- stndrdUserName := "Gogs"
- stndrdUserEmail := "gogitservice@gmail.com"
- if _, stderr, gerr := process.Exec("NewRepoContext(set name)", "git", "config", "--global", "user.name", stndrdUserName); gerr != nil {
- log.Fatal(4, "Fail to set git user.name(%s): %s", gerr, stderr)
- }
- if _, stderr, gerr := process.Exec("NewRepoContext(set email)", "git", "config", "--global", "user.email", stndrdUserEmail); gerr != nil {
- log.Fatal(4, "Fail to set git user.email(%s): %s", gerr, stderr)
+ // Check if server has user.email and user.name set correctly and set if they're not.
+ for configKey, defaultValue := range map[string]string{"user.name": "Gogs", "user.email": "gogitservice@gmail.com"} {
+ if stdout, stderr, err := process.Exec("NewRepoContext(get setting)", "git", "config", "--get", configKey); err != nil || strings.TrimSpace(stdout) == "" {
+ // ExitError indicates this config is not set
+ if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" {
+ if _, stderr, gerr := process.Exec("NewRepoContext(set "+configKey+")", "git", "config", "--global", configKey, defaultValue); gerr != nil {
+ log.Fatal(4, "Fail to set git %s(%s): %s", configKey, gerr, stderr)
+ }
+ log.Info("Git config %s set to %s", configKey, defaultValue)
+ } else {
+ log.Fatal(4, "Fail to get git %s(%s): %s", configKey, err, stderr)
}
- log.Info("Git user.name and user.email set to %s <%s>", stndrdUserName, stndrdUserEmail)
- } else {
- log.Fatal(4, "Fail to get git user.name(%s): %s", err, stderr)
}
}
@@ -832,6 +829,8 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error {
// ChangeRepositoryName changes all corresponding setting from old repository name to new one.
func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error) {
+ userName = strings.ToLower(userName)
+ oldRepoName = strings.ToLower(oldRepoName)
newRepoName = strings.ToLower(newRepoName)
if !IsLegalName(newRepoName) {
return ErrRepoNameIllegal
@@ -839,7 +838,7 @@ func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error)
// Update accesses.
accesses := make([]Access, 0, 10)
- if err = x.Find(&accesses, &Access{RepoName: strings.ToLower(userName + "/" + oldRepoName)}); err != nil {
+ if err = x.Find(&accesses, &Access{RepoName: userName + "/" + oldRepoName}); err != nil {
return err
}
@@ -1187,6 +1186,8 @@ func MirrorUpdate() {
isMirrorUpdating = true
defer func() { isMirrorUpdating = false }()
+ mirrors := make([]*Mirror, 0, 10)
+
if err := x.Iterate(new(Mirror), func(idx int, bean interface{}) error {
m := bean.(*Mirror)
if m.NextUpdate.After(time.Now()) {
@@ -1197,13 +1198,25 @@ func MirrorUpdate() {
if _, stderr, err := process.ExecDir(10*time.Minute,
repoPath, fmt.Sprintf("MirrorUpdate: %s", repoPath),
"git", "remote", "update"); err != nil {
- return errors.New("git remote update: " + stderr)
+ desc := fmt.Sprintf("Fail to update mirror repository(%s): %s", repoPath, stderr)
+ log.Error(4, desc)
+ if err = CreateRepositoryNotice(desc); err != nil {
+ log.Error(4, "Fail to add notice: %v", err)
+ }
+ return nil
}
m.NextUpdate = time.Now().Add(time.Duration(m.Interval) * time.Hour)
- return UpdateMirror(m)
+ mirrors = append(mirrors, m)
+ return nil
}); err != nil {
- log.Error(4, "repo.MirrorUpdate: %v", err)
+ log.Error(4, "MirrorUpdate: %v", err)
+ }
+
+ for i := range mirrors {
+ if err := UpdateMirror(mirrors[i]); err != nil {
+ log.Error(4, "UpdateMirror", fmt.Sprintf("%s: %v", mirrors[i].RepoName, err))
+ }
}
}
@@ -1215,7 +1228,7 @@ func GitFsck() {
isGitFscking = true
defer func() { isGitFscking = false }()
- args := append([]string{"fsck"}, setting.GitFsckArgs...)
+ args := append([]string{"fsck"}, setting.Git.Fsck.Args...)
if err := x.Where("id > 0").Iterate(new(Repository),
func(idx int, bean interface{}) error {
repo := bean.(*Repository)
@@ -1239,7 +1252,7 @@ func GitFsck() {
}
func GitGcRepos() error {
- args := append([]string{"gc"}, setting.GitGcArgs...)
+ args := append([]string{"gc"}, setting.Git.GcArgs...)
return x.Where("id > 0").Iterate(new(Repository),
func(idx int, bean interface{}) error {
repo := bean.(*Repository)