diff options
author | zeripath <art27@cantab.net> | 2019-11-10 08:42:51 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-10 08:42:51 +0000 |
commit | 8eeb2877d5803d0501815466d651a519b32bbd3a (patch) | |
tree | ffd1abc59788797e0d99169b8a88655f51d4128f /modules | |
parent | 31416a5f4e70d4972c351cde170b59d13fcbb77f (diff) | |
download | gitea-8eeb2877d5803d0501815466d651a519b32bbd3a.tar.gz gitea-8eeb2877d5803d0501815466d651a519b32bbd3a.zip |
Adjust error reporting from merge failures and use LC_ALL=C for git (#8548)
There are two major components to this PR:
* This PR handles merge and rebase failures from merging a little more nicely with Flash errors rather a 500.
* All git commands are run in the LC_ALL="C" environment to ensure that error messages are in English. This DefaultLocale is defined in a way that if necessary (due to platform weirdness) it can be overridden at build time using LDFLAGS="-X "code.gitea.io/gitea/modules/git.DefaultLocale=C"" with C changed for the locale as necessary.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/git/command.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/git/command.go b/modules/git/command.go index 347dcfe39f..2b5288aeab 100644 --- a/modules/git/command.go +++ b/modules/git/command.go @@ -9,6 +9,7 @@ import ( "context" "fmt" "io" + "os" "os/exec" "strings" "time" @@ -24,6 +25,9 @@ var ( DefaultCommandExecutionTimeout = 60 * time.Second ) +// DefaultLocale is the default LC_ALL to run git commands in. +const DefaultLocale = "C" + // Command represents a command with its subcommands or arguments. type Command struct { name string @@ -77,7 +81,12 @@ func (c *Command) RunInDirTimeoutEnvFullPipeline(env []string, timeout time.Dura defer cancel() cmd := exec.CommandContext(ctx, c.name, c.args...) - cmd.Env = env + if env == nil { + cmd.Env = append(os.Environ(), fmt.Sprintf("LC_ALL=%s", DefaultLocale)) + } else { + cmd.Env = env + cmd.Env = append(cmd.Env, fmt.Sprintf("LC_ALL=%s", DefaultLocale)) + } cmd.Dir = dir cmd.Stdout = stdout cmd.Stderr = stderr |