diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 706400b070222647cf701c6741f0ee37b1253085..b735007ec3930d34dc85facea8d1298892720a25 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1085,7 +1085,7 @@ QProcessEnvironment GitClient::processEnvironment() const if (m_settings.adoptPath) environment.insert(QLatin1String("PATH"), m_settings.path); // Set up SSH and C locale (required by git using perl). - VCSBase::VCSBasePlugin::setProcessEnvironment(&environment); + VCSBase::VCSBasePlugin::setProcessEnvironment(&environment, false); return environment; } diff --git a/src/plugins/vcsbase/checkoutjobs.cpp b/src/plugins/vcsbase/checkoutjobs.cpp index 70ff42c4439261e556efd16e704c78a040b0f794..14bfdd15209fd9b984cc835c603b519d2bb23b88 100644 --- a/src/plugins/vcsbase/checkoutjobs.cpp +++ b/src/plugins/vcsbase/checkoutjobs.cpp @@ -72,7 +72,7 @@ ProcessCheckoutJobPrivate::ProcessCheckoutJobPrivate(const QString &b, { if (!workingDirectory.isEmpty()) process->setWorkingDirectory(workingDirectory); - VCSBasePlugin::setProcessEnvironment(&processEnv); + VCSBasePlugin::setProcessEnvironment(&processEnv, false); process->setProcessEnvironment(processEnv); } diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 957395c0074d16d4965565b77cf0e66ea7846cb8..ab5e3fefd1c795e8011e8ea9d6ecc78865231f45 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -686,9 +686,10 @@ bool VCSBasePlugin::isSshPromptConfigured() return !sshPrompt().isEmpty(); } -void VCSBasePlugin::setProcessEnvironment(QProcessEnvironment *e) +void VCSBasePlugin::setProcessEnvironment(QProcessEnvironment *e, bool forceCLocale) { - e->insert(QLatin1String("LANG"), QString(QLatin1Char('C'))); + if (forceCLocale) + e->insert(QLatin1String("LANG"), QString(QLatin1Char('C'))); const QString sshPromptBinary = sshPrompt(); if (!sshPromptBinary.isEmpty()) e->insert(QLatin1String("SSH_ASKPASS"), sshPromptBinary); @@ -738,6 +739,8 @@ Utils::SynchronousProcessResponse nsp << "ssh (" << sshPromptConfigured << ')'; if (flags & SuppressCommandLogging) nsp << "suppress_log"; + if (flags & ForceCLocale) + nsp << "c_locale"; if (outputCodec) nsp << " Codec: " << outputCodec->name(); } @@ -747,7 +750,7 @@ Utils::SynchronousProcessResponse if (!workingDir.isEmpty()) process.setWorkingDirectory(workingDir); - VCSBase::VCSBasePlugin::setProcessEnvironment(&env); + VCSBase::VCSBasePlugin::setProcessEnvironment(&env, (flags & ForceCLocale)); process.setProcessEnvironment(env); process.setTimeout(timeOutMS); if (outputCodec) diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h index 191082c6f4f6d8662b3679c966f8ac146ebdca35..d9a22367981b7bbcd3ddc16ba7a40c323e0e4202 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.h +++ b/src/plugins/vcsbase/vcsbaseplugin.h @@ -176,10 +176,10 @@ public: static QString findRepositoryForDirectory(const QString &dir, const QString &checkFile); // Set up the environment for a version control command line call. - // Sets LANG to 'C' to force English (suppress LOCALE warnings) - // and sets up SSH graphical password prompting (note that the latter - // requires a terminal-less process). - static void setProcessEnvironment(QProcessEnvironment *e); + // Sets up SSH graphical password prompting (note that the latter + // requires a terminal-less process) and sets LANG to 'C' to force English + // (suppress LOCALE warnings/parse commands output) if desired. + static void setProcessEnvironment(QProcessEnvironment *e, bool forceCLocale); // Returns whether an SSH prompt is configured. static bool isSshPromptConfigured(); @@ -191,7 +191,8 @@ public: SuppressStdErrInLogWindow = 0x8, // No standard error output to VCS output window. SuppressFailMessageInLogWindow = 0x10, // No message VCS about failure in VCS output window. SuppressCommandLogging = 0x20, // No command log entry in VCS output window. - ShowSuccessMessage = 0x40 // Show message about successful completion in VCS output window. + ShowSuccessMessage = 0x40, // Show message about successful completion in VCS output window. + ForceCLocale = 0x80 // Force C-locale for commands whose output is parsed. }; static Utils::SynchronousProcessResponse