Commit a9f00ac1 authored by jkobus's avatar jkobus Committed by Jarek Kobus

GitClient: use "git show" for show instead of "git diff"

Task-number: QTCREATORBUG-12755
Change-Id: Idc4427425a3ef3e70c8738f1062e20d50bab69ca
Reviewed-by: Orgad Shaneh's avatarOrgad Shaneh <orgads@gmail.com>
parent f7c739cb
...@@ -124,13 +124,18 @@ public: ...@@ -124,13 +124,18 @@ public:
private slots: private slots:
void slotShowDescriptionReceived(const QString &data); void slotShowDescriptionReceived(const QString &data);
void slotDiffOutputReceived(const QString &contents); void slotTextualDiffOutputReceived(const QString &contents);
private: private:
void postCollectShowDescription(const QString &id); void postCollectShowDescription(const QString &id);
void postCollectDiffOutput(const QStringList &arguments); void postCollectTextualDiffOutputUsingDiffCommand(const QStringList &arguments);
void postCollectDiffOutput(const QList<QStringList> &argumentsList); void postCollectTextualDiffOutputUsingDiffCommand(const QList<QStringList> &argumentsList);
void addJob(VcsBase::Command *command, const QStringList &arguments); void postCollectTextualDiffOutputUsingShowCommand(const QStringList &arguments);
void postCollectTextualDiffOutput(const QString &gitCommand,
const QList<QStringList> &argumentsList);
void addJob(VcsBase::Command *command,
const QString &gitCommand,
const QStringList &arguments);
int timeout() const; int timeout() const;
QProcessEnvironment processEnvironment() const; QProcessEnvironment processEnvironment() const;
QString gitPath() const; QString gitPath() const;
...@@ -154,7 +159,7 @@ GitDiffHandler::GitDiffHandler(DiffEditor::DiffEditorController *controller, ...@@ -154,7 +159,7 @@ GitDiffHandler::GitDiffHandler(DiffEditor::DiffEditorController *controller,
void GitDiffHandler::diffFile(const QString &fileName) void GitDiffHandler::diffFile(const QString &fileName)
{ {
postCollectDiffOutput(QStringList() << QLatin1String("--") << fileName); postCollectTextualDiffOutputUsingDiffCommand(QStringList() << QLatin1String("--") << fileName);
} }
void GitDiffHandler::diffFiles(const QStringList &stagedFileNames, void GitDiffHandler::diffFiles(const QStringList &stagedFileNames,
...@@ -175,22 +180,22 @@ void GitDiffHandler::diffFiles(const QStringList &stagedFileNames, ...@@ -175,22 +180,22 @@ void GitDiffHandler::diffFiles(const QStringList &stagedFileNames,
arguments << unstagedArguments; arguments << unstagedArguments;
} }
postCollectDiffOutput(arguments); postCollectTextualDiffOutputUsingDiffCommand(arguments);
} }
void GitDiffHandler::diffProjects(const QStringList &projectPaths) void GitDiffHandler::diffProjects(const QStringList &projectPaths)
{ {
postCollectDiffOutput(QStringList() << QLatin1String("--") << projectPaths); postCollectTextualDiffOutputUsingDiffCommand(QStringList() << QLatin1String("--") << projectPaths);
} }
void GitDiffHandler::diffRepository() void GitDiffHandler::diffRepository()
{ {
postCollectDiffOutput(QStringList()); postCollectTextualDiffOutputUsingDiffCommand(QStringList());
} }
void GitDiffHandler::diffBranch(const QString &branchName) void GitDiffHandler::diffBranch(const QString &branchName)
{ {
postCollectDiffOutput(QStringList() << branchName); postCollectTextualDiffOutputUsingDiffCommand(QStringList() << branchName);
} }
void GitDiffHandler::show(const QString &id) void GitDiffHandler::show(const QString &id)
...@@ -231,7 +236,11 @@ void GitDiffHandler::slotShowDescriptionReceived(const QString &description) ...@@ -231,7 +236,11 @@ void GitDiffHandler::slotShowDescriptionReceived(const QString &description)
return; return;
} }
postCollectDiffOutput(QStringList() << m_id + QLatin1Char('^') << m_id); postCollectTextualDiffOutputUsingShowCommand(QStringList()
<< QLatin1String("--format=format:") // omit header, already generated
<< QLatin1String(noColorOption)
<< QLatin1String(decorateOption)
<< m_id);
// need to be called after postCollectDiffOutput(), since it clears the description // need to be called after postCollectDiffOutput(), since it clears the description
m_controller->setDescription( m_controller->setDescription(
...@@ -239,10 +248,14 @@ void GitDiffHandler::slotShowDescriptionReceived(const QString &description) ...@@ -239,10 +248,14 @@ void GitDiffHandler::slotShowDescriptionReceived(const QString &description)
description)); description));
} }
void GitDiffHandler::addJob(VcsBase::Command *command, const QStringList &arguments) void GitDiffHandler::addJob(VcsBase::Command *command,
const QString &gitCommand,
const QStringList &arguments)
{ {
QStringList args; QStringList args;
args << QLatin1String("diff"); args << gitCommand;
args << QLatin1String("-m"); // show diff agains parents instead of merge commits
args << QLatin1String("--first-parent"); // show only first parent
if (m_controller->isIgnoreWhitespace()) if (m_controller->isIgnoreWhitespace())
args << QLatin1String("--ignore-space-change"); args << QLatin1String("--ignore-space-change");
args << QLatin1String("--unified=") + QString::number( args << QLatin1String("--unified=") + QString::number(
...@@ -251,12 +264,22 @@ void GitDiffHandler::addJob(VcsBase::Command *command, const QStringList &argume ...@@ -251,12 +264,22 @@ void GitDiffHandler::addJob(VcsBase::Command *command, const QStringList &argume
command->addJob(args, timeout()); command->addJob(args, timeout());
} }
void GitDiffHandler::postCollectDiffOutput(const QStringList &arguments) void GitDiffHandler::postCollectTextualDiffOutputUsingDiffCommand(const QStringList &arguments)
{
postCollectTextualDiffOutputUsingDiffCommand(QList<QStringList>() << arguments);
}
void GitDiffHandler::postCollectTextualDiffOutputUsingDiffCommand(const QList<QStringList> &argumentsList)
{
postCollectTextualDiffOutput(QLatin1String("diff"), argumentsList);
}
void GitDiffHandler::postCollectTextualDiffOutputUsingShowCommand(const QStringList &arguments)
{ {
postCollectDiffOutput(QList<QStringList>() << arguments); postCollectTextualDiffOutput(QLatin1String("show"), QList<QStringList>() << arguments);
} }
void GitDiffHandler::postCollectDiffOutput(const QList<QStringList> &argumentsList) void GitDiffHandler::postCollectTextualDiffOutput(const QString &gitCommand, const QList<QStringList> &argumentsList)
{ {
if (m_controller.isNull()) { if (m_controller.isNull()) {
deleteLater(); deleteLater();
...@@ -269,16 +292,16 @@ void GitDiffHandler::postCollectDiffOutput(const QList<QStringList> &argumentsLi ...@@ -269,16 +292,16 @@ void GitDiffHandler::postCollectDiffOutput(const QList<QStringList> &argumentsLi
processEnvironment()); processEnvironment());
command->setCodec(EditorManager::defaultTextCodec()); command->setCodec(EditorManager::defaultTextCodec());
connect(command, SIGNAL(output(QString)), connect(command, SIGNAL(output(QString)),
this, SLOT(slotDiffOutputReceived(QString))); this, SLOT(slotTextualDiffOutputReceived(QString)));
command->addFlags(diffExecutionFlags()); command->addFlags(diffExecutionFlags());
for (int i = 0; i < argumentsList.count(); i++) for (int i = 0; i < argumentsList.count(); i++)
addJob(command, argumentsList.at(i)); addJob(command, gitCommand, argumentsList.at(i));
command->execute(); command->execute();
} }
void GitDiffHandler::slotDiffOutputReceived(const QString &contents) void GitDiffHandler::slotTextualDiffOutputReceived(const QString &contents)
{ {
if (m_controller.isNull()) { if (m_controller.isNull()) {
deleteLater(); deleteLater();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment