summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-11-10 08:42:51 +0000
committerGitHub <noreply@github.com>2019-11-10 08:42:51 +0000
commit8eeb2877d5803d0501815466d651a519b32bbd3a (patch)
treeffd1abc59788797e0d99169b8a88655f51d4128f /modules
parent31416a5f4e70d4972c351cde170b59d13fcbb77f (diff)
downloadgitea-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.go11
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