forked from qt-creator/qt-creator
Git: Fix config encoding on Windows
This fixes commit d72b4851b4
which has removed the conversion from Utf-8 on Windows.
Task-number: QTCREATORBUG-12092
Change-Id: I83c4d2d5eacb79ca99ef0b6f385344689582079e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -2401,8 +2401,7 @@ SubmoduleDataMap GitClient::submoduleList(const QString &workingDirectory)
|
||||
if (cachedSubmoduleData.contains(workingDirectory))
|
||||
return cachedSubmoduleData.value(workingDirectory);
|
||||
|
||||
QStringList allConfigs =
|
||||
commandOutputFromLocal8Bit(readConfig(workingDirectory, QLatin1String("-l")))
|
||||
QStringList allConfigs = readConfigValue(workingDirectory, QLatin1String("-l"))
|
||||
.split(QLatin1Char('\n'));
|
||||
const QString submoduleLineStart = QLatin1String("submodule.");
|
||||
foreach (const QString &configLine, allConfigs) {
|
||||
@@ -3004,7 +3003,7 @@ QString GitClient::gitBinaryPath(bool *ok, QString *errorMessage) const
|
||||
|
||||
QTextCodec *GitClient::encoding(const QString &workingDirectory, const QByteArray &configVar) const
|
||||
{
|
||||
QByteArray codecName = readConfig(workingDirectory, QLatin1String(configVar)).trimmed();
|
||||
QByteArray codecName = readConfigBytes(workingDirectory, QLatin1String(configVar)).trimmed();
|
||||
// Set default commit encoding to 'UTF-8', when it's not set,
|
||||
// to solve displaying error of commit log with non-latin characters.
|
||||
if (codecName.isEmpty())
|
||||
@@ -3728,7 +3727,7 @@ bool GitClient::synchronousStashList(const QString &workingDirectory,
|
||||
return true;
|
||||
}
|
||||
|
||||
QByteArray GitClient::readConfig(const QString &workingDirectory, const QString &configVar) const
|
||||
QByteArray GitClient::readConfigBytes(const QString &workingDirectory, const QString &configVar) const
|
||||
{
|
||||
QStringList arguments;
|
||||
arguments << QLatin1String("config") << configVar;
|
||||
@@ -3746,7 +3745,13 @@ QByteArray GitClient::readConfig(const QString &workingDirectory, const QString
|
||||
// Read a single-line config value, return trimmed
|
||||
QString GitClient::readConfigValue(const QString &workingDirectory, const QString &configVar) const
|
||||
{
|
||||
return commandOutputFromLocal8Bit(readConfig(workingDirectory, configVar).trimmed());
|
||||
// msysGit always uses UTF-8 for configuration:
|
||||
// https://github.com/msysgit/msysgit/wiki/Git-for-Windows-Unicode-Support#convert-config-files
|
||||
static QTextCodec *codec = Utils::HostOsInfo::isWindowsHost()
|
||||
? QTextCodec::codecForName("UTF-8")
|
||||
: QTextCodec::codecForLocale();
|
||||
const QByteArray value = readConfigBytes(workingDirectory, configVar).trimmed();
|
||||
return Utils::SynchronousProcess::normalizeNewlines(codec->toUnicode(value));
|
||||
}
|
||||
|
||||
bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
|
||||
|
||||
@@ -281,8 +281,6 @@ public:
|
||||
const QString &messge, QString *name,
|
||||
QString *errorMessage = 0);
|
||||
|
||||
QByteArray readConfig(const QString &workingDirectory, const QString &configVar) const;
|
||||
|
||||
QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
|
||||
|
||||
QTextCodec *encoding(const QString &workingDirectory, const QByteArray &configVar) const;
|
||||
@@ -347,6 +345,7 @@ private slots:
|
||||
void fetchFinished(const QVariant &cookie);
|
||||
|
||||
private:
|
||||
QByteArray readConfigBytes(const QString &workingDirectory, const QString &configVar) const;
|
||||
QTextCodec *getSourceCodec(const QString &file) const;
|
||||
VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty,
|
||||
const QString &dynamicPropertyValue) const;
|
||||
|
||||
Reference in New Issue
Block a user