Browse Source

Default values for both user.name and user.email

The previous behavior was to set default values only if user.name was
not set, but to always set it for both. This only sets a value if there
wasn't one; this fixes cases where someone has a user.name but no
user.email (see included Dockerfile) or someone has a user.email but no
user.name (before the email would have been over-written).
pull/790/head
euank 10 years ago
parent
commit
234a7c19a4
  1. 25
      models/repo.go

25
models/repo.go

@ -105,21 +105,18 @@ func NewRepoContext() {
log.Fatal(4, "Gogs requires Git version greater or equal to 1.7.1") 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. // Check if server has user.email and user.name set correctly and set if they're not.
if stdout, stderr, err := process.Exec("NewRepoContext(get setting)", "git", "config", "--get", "user.name"); err != nil || strings.TrimSpace(stdout) == "" { for configKey, defaultValue := range map[string]string{"user.name": "Gogs", "user.email": "gogitservice@gmail.com"} {
// ExitError indicates user.name is not set if stdout, stderr, err := process.Exec("NewRepoContext(get setting)", "git", "config", "--get", configKey); err != nil || strings.TrimSpace(stdout) == "" {
if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" { // ExitError indicates this config is not set
stndrdUserName := "Gogs" if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" {
stndrdUserEmail := "gogitservice@gmail.com" if _, stderr, gerr := process.Exec("NewRepoContext(set "+configKey+")", "git", "config", "--global", configKey, defaultValue); gerr != nil {
if _, stderr, gerr := process.Exec("NewRepoContext(set name)", "git", "config", "--global", "user.name", stndrdUserName); gerr != nil { log.Fatal(4, "Fail to set git %s(%s): %s", configKey, gerr, stderr)
log.Fatal(4, "Fail to set git user.name(%s): %s", gerr, stderr) }
} log.Info("Git config %s set to %s", configKey, defaultValue)
if _, stderr, gerr := process.Exec("NewRepoContext(set email)", "git", "config", "--global", "user.email", stndrdUserEmail); gerr != nil { } else {
log.Fatal(4, "Fail to set git user.email(%s): %s", gerr, stderr) 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)
} }
} }

Loading…
Cancel
Save