aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2009-03-17 12:36:55 +0100
committerFriedemann Kleint <[email protected]>2009-03-17 12:36:55 +0100
commit465bf149d5c1dbb142ffd81bcab234716192cdee (patch)
tree96fb65b838d140825c1ee7530b26fc3e7b9c22e2 /src/plugins/git/gitclient.cpp
parent8e0fb8ba9a4bc58fdcc4fe1c6dbf6d7dfbddb160 (diff)
Fixes: Using a git configuration with colored output breaks much of the git plugin.
Task: 248067 Details: Use --no-color where appropriate. Use a hack to remove color sequences from output for "status" since it does not support the option as of git 1.6.2.
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r--src/plugins/git/gitclient.cpp38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 25a134bd46a..8baabe03a2a 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -57,8 +57,8 @@
using namespace Git;
using namespace Git::Internal;
-const char *const kGitDirectoryC = ".git";
-const char *const kBranchIndicatorC = "# On branch";
+static const char *const kGitDirectoryC = ".git";
+static const char *const kBranchIndicatorC = "# On branch";
static inline QString msgServerFailure()
{
@@ -108,6 +108,8 @@ GitClient::~GitClient()
{
}
+const char *GitClient::noColorOption = "--no-color";
+
QString GitClient::findRepositoryForFile(const QString &fileName)
{
const QString gitDirectory = QLatin1String(kGitDirectoryC);
@@ -201,22 +203,24 @@ void GitClient::diff(const QString &workingDirectory,
// when using the submit dialog.
GitCommand *command = createCommand(workingDirectory, editor);
// Directory diff?
+ QStringList commonDiffArgs;
+ commonDiffArgs << QLatin1String("diff") << QLatin1String(noColorOption);
if (unstagedFileNames.empty() && stagedFileNames.empty()) {
- QStringList arguments;
- arguments << QLatin1String("diff") << diffArgs;
+ QStringList arguments(commonDiffArgs);
+ arguments << diffArgs;
m_plugin->outputWindow()->append(formatCommand(binary, arguments));
command->addJob(arguments, m_settings.timeout);
} else {
// Files diff.
if (!unstagedFileNames.empty()) {
- QStringList arguments;
- arguments << QLatin1String("diff") << diffArgs << QLatin1String("--") << unstagedFileNames;
+ QStringList arguments(commonDiffArgs);
+ arguments << QLatin1String("--") << unstagedFileNames;
m_plugin->outputWindow()->append(formatCommand(binary, arguments));
command->addJob(arguments, m_settings.timeout);
}
if (!stagedFileNames.empty()) {
- QStringList arguments;
- arguments << QLatin1String("diff") << QLatin1String("--cached") << diffArgs << QLatin1String("--") << stagedFileNames;
+ QStringList arguments(commonDiffArgs);
+ arguments << QLatin1String("--cached") << diffArgs << QLatin1String("--") << stagedFileNames;
m_plugin->outputWindow()->append(formatCommand(binary, arguments));
command->addJob(arguments, m_settings.timeout);
}
@@ -233,7 +237,7 @@ void GitClient::diff(const QString &workingDirectory,
QStringList arguments;
arguments << QLatin1String("diff");
if (!fileName.isEmpty())
- arguments << diffArgs << QLatin1String("--") << fileName;
+ arguments << diffArgs << QLatin1String(noColorOption) << QLatin1String("--") << fileName;
const QString kind = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_KIND);
const QString title = tr("Git Diff %1").arg(fileName);
@@ -245,6 +249,7 @@ void GitClient::diff(const QString &workingDirectory,
void GitClient::status(const QString &workingDirectory)
{
+ // @TODO: Use "--no-color" once it is supported
QStringList statusArgs(QLatin1String("status"));
statusArgs << QLatin1String("-u");
executeGit(workingDirectory, statusArgs, 0, true);
@@ -255,7 +260,8 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName)
if (Git::Constants::debug)
qDebug() << "log" << workingDirectory << fileName;
- QStringList arguments(QLatin1String("log"));
+ QStringList arguments;
+ arguments << QLatin1String("log") << QLatin1String(noColorOption);
if (m_settings.logCount > 0)
arguments << QLatin1String("-n") << QString::number(m_settings.logCount);
@@ -274,8 +280,8 @@ void GitClient::show(const QString &source, const QString &id)
{
if (Git::Constants::debug)
qDebug() << "show" << source << id;
- QStringList arguments(QLatin1String("show"));
- arguments << id;
+ QStringList arguments;
+ arguments << QLatin1String("show") << QLatin1String(noColorOption) << id;
const QString title = tr("Git Show %1").arg(id);
const QString kind = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_KIND);
@@ -450,7 +456,7 @@ bool GitClient::synchronousShow(const QString &workingDirectory, const QString &
if (Git::Constants::debug)
qDebug() << Q_FUNC_INFO << workingDirectory << id;
QStringList args(QLatin1String("show"));
- args << id;
+ args << QLatin1String(noColorOption) << id;
QByteArray outputText;
QByteArray errorText;
const bool rc = synchronousGit(workingDirectory, args, &outputText, &errorText);
@@ -633,10 +639,12 @@ GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory,
// Run 'status'. Note that git returns exitcode 1 if there are no added files.
QByteArray outputText;
QByteArray errorText;
+ // @TODO: Use "--no-color" once it is supported
QStringList statusArgs(QLatin1String("status"));
if (untracked)
statusArgs << QLatin1String("-u");
const bool statusRc = synchronousGit(workingDirectory, statusArgs, &outputText, &errorText);
+ GitCommand::removeColorCodes(&outputText);
if (output)
*output = QString::fromLocal8Bit(outputText).remove(QLatin1Char('\r'));
// Is it something really fatal?
@@ -958,14 +966,14 @@ void GitClient::stashPop(const QString &workingDirectory)
void GitClient::branchList(const QString &workingDirectory)
{
QStringList arguments(QLatin1String("branch"));
- arguments << QLatin1String("-r");
+ arguments << QLatin1String("-r") << QLatin1String(noColorOption);
executeGit(workingDirectory, arguments, 0, true);
}
void GitClient::stashList(const QString &workingDirectory)
{
QStringList arguments(QLatin1String("stash"));
- arguments << QLatin1String("list");
+ arguments << QLatin1String("list") << QLatin1String(noColorOption);
executeGit(workingDirectory, arguments, 0, true);
}