forked from qt-creator/qt-creator
Git: De-noise GitClient
Change-Id: I9b001bd47af826a3c4611071ca0b3a0674079b01 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
9592ae93b3
commit
7ba734162c
@@ -86,6 +86,8 @@ static const char CHERRY_PICK_HEAD[] = "CHERRY_PICK_HEAD";
|
|||||||
static const char noColorOption[] = "--no-color";
|
static const char noColorOption[] = "--no-color";
|
||||||
static const char decorateOption[] = "--decorate";
|
static const char decorateOption[] = "--decorate";
|
||||||
|
|
||||||
|
using namespace Core;
|
||||||
|
|
||||||
namespace Git {
|
namespace Git {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -265,7 +267,7 @@ void GitDiffHandler::postCollectDiffOutput(const QList<QStringList> &argumentsLi
|
|||||||
VcsBase::Command *command = new VcsBase::Command(gitPath(),
|
VcsBase::Command *command = new VcsBase::Command(gitPath(),
|
||||||
m_workingDirectory,
|
m_workingDirectory,
|
||||||
processEnvironment());
|
processEnvironment());
|
||||||
command->setCodec(Core::EditorManager::defaultTextCodec());
|
command->setCodec(EditorManager::defaultTextCodec());
|
||||||
connect(command, SIGNAL(output(QString)),
|
connect(command, SIGNAL(output(QString)),
|
||||||
this, SLOT(slotDiffOutputReceived(QString)));
|
this, SLOT(slotDiffOutputReceived(QString)));
|
||||||
command->addFlags(diffExecutionFlags());
|
command->addFlags(diffExecutionFlags());
|
||||||
@@ -610,11 +612,11 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Core::IEditor *locateEditor(const char *property, const QString &entry)
|
IEditor *locateEditor(const char *property, const QString &entry)
|
||||||
{
|
{
|
||||||
foreach (Core::IDocument *document, Core::DocumentModel::openedDocuments())
|
foreach (IDocument *document, DocumentModel::openedDocuments())
|
||||||
if (document->property(property).toString() == entry)
|
if (document->property(property).toString() == entry)
|
||||||
return Core::DocumentModel::editorsForDocument(document).first();
|
return DocumentModel::editorsForDocument(document).first();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,7 +660,7 @@ static inline QString msgCannotLaunch(const QString &binary)
|
|||||||
|
|
||||||
static inline QString currentDocumentPath()
|
static inline QString currentDocumentPath()
|
||||||
{
|
{
|
||||||
if (Core::IDocument *document= Core::EditorManager::currentDocument())
|
if (IDocument *document= EditorManager::currentDocument())
|
||||||
return QFileInfo(document->filePath()).path();
|
return QFileInfo(document->filePath()).path();
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
@@ -701,7 +703,7 @@ GitClient::GitClient(GitSettings *settings) :
|
|||||||
m_contextChunkIndex(-1)
|
m_contextChunkIndex(-1)
|
||||||
{
|
{
|
||||||
QTC_CHECK(settings);
|
QTC_CHECK(settings);
|
||||||
connect(Core::ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings()));
|
connect(ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings()));
|
||||||
m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
|
m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
|
||||||
.arg(QCoreApplication::applicationFilePath())
|
.arg(QCoreApplication::applicationFilePath())
|
||||||
.arg(QCoreApplication::applicationPid());
|
.arg(QCoreApplication::applicationPid());
|
||||||
@@ -760,12 +762,12 @@ VcsBase::VcsBaseEditorWidget *GitClient::findExistingVCSEditor(const char *regis
|
|||||||
const QString &dynamicPropertyValue) const
|
const QString &dynamicPropertyValue) const
|
||||||
{
|
{
|
||||||
VcsBase::VcsBaseEditorWidget *rc = 0;
|
VcsBase::VcsBaseEditorWidget *rc = 0;
|
||||||
Core::IEditor *outputEditor = locateEditor(registerDynamicProperty, dynamicPropertyValue);
|
IEditor *outputEditor = locateEditor(registerDynamicProperty, dynamicPropertyValue);
|
||||||
if (!outputEditor)
|
if (!outputEditor)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Exists already
|
// Exists already
|
||||||
Core::EditorManager::activateEditor(outputEditor);
|
EditorManager::activateEditor(outputEditor);
|
||||||
outputEditor->document()->setContents(m_msgWait.toUtf8());
|
outputEditor->document()->setContents(m_msgWait.toUtf8());
|
||||||
rc = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
|
rc = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
|
||||||
|
|
||||||
@@ -869,7 +871,7 @@ void GitClient::stage(const QString &patch, bool revert)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
const QString baseDir = m_contextDocument->workingDirectory();
|
const QString baseDir = m_contextDocument->workingDirectory();
|
||||||
QTextCodec *codec = Core::EditorManager::defaultTextCodec();
|
QTextCodec *codec = EditorManager::defaultTextCodec();
|
||||||
const QByteArray patchData = codec
|
const QByteArray patchData = codec
|
||||||
? codec->fromUnicode(patch) : patch.toLocal8Bit();
|
? codec->fromUnicode(patch) : patch.toLocal8Bit();
|
||||||
patchFile.write(patchData);
|
patchFile.write(patchData);
|
||||||
@@ -900,7 +902,7 @@ void GitClient::stage(const QString &patch, bool revert)
|
|||||||
* existing instance and to reuse it (in case, say, 'git diff foo' is
|
* existing instance and to reuse it (in case, say, 'git diff foo' is
|
||||||
* already open). */
|
* already open). */
|
||||||
VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
|
VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
|
||||||
Core::Id id,
|
Id id,
|
||||||
QString title,
|
QString title,
|
||||||
const QString &source, // Source file or directory
|
const QString &source, // Source file or directory
|
||||||
CodecType codecType,
|
CodecType codecType,
|
||||||
@@ -912,7 +914,7 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
|
|||||||
QTC_CHECK(!findExistingVCSEditor(registerDynamicProperty, dynamicPropertyValue));
|
QTC_CHECK(!findExistingVCSEditor(registerDynamicProperty, dynamicPropertyValue));
|
||||||
|
|
||||||
// Create new, set wait message, set up with source and codec
|
// Create new, set wait message, set up with source and codec
|
||||||
Core::IEditor *outputEditor = Core::EditorManager::openEditorWithContents(id, &title,
|
IEditor *outputEditor = EditorManager::openEditorWithContents(id, &title,
|
||||||
m_msgWait.toUtf8());
|
m_msgWait.toUtf8());
|
||||||
outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue);
|
outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue);
|
||||||
rc = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
|
rc = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
|
||||||
@@ -975,7 +977,7 @@ void GitClient::diff(const QString &workingDirectory,
|
|||||||
|
|
||||||
diffEditorDocument->controller()->requestReload();
|
diffEditorDocument->controller()->requestReload();
|
||||||
|
|
||||||
Core::EditorManager::activateEditorForDocument(diffEditorDocument);
|
EditorManager::activateEditorForDocument(diffEditorDocument);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::diff(const QString &workingDirectory, const QString &fileName)
|
void GitClient::diff(const QString &workingDirectory, const QString &fileName)
|
||||||
@@ -1000,7 +1002,7 @@ void GitClient::diff(const QString &workingDirectory, const QString &fileName)
|
|||||||
|
|
||||||
diffEditorDocument->controller()->requestReload();
|
diffEditorDocument->controller()->requestReload();
|
||||||
|
|
||||||
Core::EditorManager::activateEditorForDocument(diffEditorDocument);
|
EditorManager::activateEditorForDocument(diffEditorDocument);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::diffBranch(const QString &workingDirectory,
|
void GitClient::diffBranch(const QString &workingDirectory,
|
||||||
@@ -1024,7 +1026,7 @@ void GitClient::diffBranch(const QString &workingDirectory,
|
|||||||
|
|
||||||
diffEditorDocument->controller()->requestReload();
|
diffEditorDocument->controller()->requestReload();
|
||||||
|
|
||||||
Core::EditorManager::activateEditorForDocument(diffEditorDocument);
|
EditorManager::activateEditorForDocument(diffEditorDocument);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::merge(const QString &workingDirectory,
|
void GitClient::merge(const QString &workingDirectory,
|
||||||
@@ -1051,7 +1053,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName,
|
|||||||
{
|
{
|
||||||
const QString msgArg = fileName.isEmpty() ? workingDirectory : fileName;
|
const QString msgArg = fileName.isEmpty() ? workingDirectory : fileName;
|
||||||
const QString title = tr("Git Log \"%1\"").arg(msgArg);
|
const QString title = tr("Git Log \"%1\"").arg(msgArg);
|
||||||
const Core::Id editorId = Git::Constants::GIT_LOG_EDITOR_ID;
|
const Id editorId = Git::Constants::GIT_LOG_EDITOR_ID;
|
||||||
const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName);
|
const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName);
|
||||||
VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
|
VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("logFileName", sourceFile);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
@@ -1086,7 +1088,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName,
|
|||||||
void GitClient::reflog(const QString &workingDirectory)
|
void GitClient::reflog(const QString &workingDirectory)
|
||||||
{
|
{
|
||||||
const QString title = tr("Git Reflog \"%1\"").arg(workingDirectory);
|
const QString title = tr("Git Reflog \"%1\"").arg(workingDirectory);
|
||||||
const Core::Id editorId = Git::Constants::GIT_LOG_EDITOR_ID;
|
const Id editorId = Git::Constants::GIT_LOG_EDITOR_ID;
|
||||||
VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("reflogRepository", workingDirectory);
|
VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("reflogRepository", workingDirectory);
|
||||||
if (!editor) {
|
if (!editor) {
|
||||||
editor = createVcsEditor(editorId, title, workingDirectory, CodecLogOutput,
|
editor = createVcsEditor(editorId, title, workingDirectory, CodecLogOutput,
|
||||||
@@ -1157,12 +1159,12 @@ void GitClient::show(const QString &source, const QString &id, const QString &na
|
|||||||
|
|
||||||
diffEditorDocument->controller()->requestReload();
|
diffEditorDocument->controller()->requestReload();
|
||||||
|
|
||||||
Core::EditorManager::activateEditorForDocument(diffEditorDocument);
|
EditorManager::activateEditorForDocument(diffEditorDocument);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::saveSettings()
|
void GitClient::saveSettings()
|
||||||
{
|
{
|
||||||
settings()->writeSettings(Core::ICore::settings());
|
settings()->writeSettings(ICore::settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
|
void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
|
||||||
@@ -1188,7 +1190,7 @@ void GitClient::blame(const QString &workingDirectory,
|
|||||||
const QString &revision,
|
const QString &revision,
|
||||||
int lineNumber)
|
int lineNumber)
|
||||||
{
|
{
|
||||||
const Core::Id editorId = Git::Constants::GIT_BLAME_EDITOR_ID;
|
const Id editorId = Git::Constants::GIT_BLAME_EDITOR_ID;
|
||||||
const QString id = VcsBase::VcsBaseEditorWidget::getTitleId(workingDirectory, QStringList(fileName), revision);
|
const QString id = VcsBase::VcsBaseEditorWidget::getTitleId(workingDirectory, QStringList(fileName), revision);
|
||||||
const QString title = tr("Git Blame \"%1\"").arg(id);
|
const QString title = tr("Git Blame \"%1\"").arg(id);
|
||||||
const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName);
|
const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName);
|
||||||
@@ -1242,7 +1244,7 @@ QStringList GitClient::setupCheckoutArguments(const QString &workingDirectory,
|
|||||||
if (localBranches.contains(ref))
|
if (localBranches.contains(ref))
|
||||||
return arguments;
|
return arguments;
|
||||||
|
|
||||||
if (QMessageBox::question(Core::ICore::mainWindow(), tr("Create Local Branch"),
|
if (QMessageBox::question(ICore::mainWindow(), tr("Create Local Branch"),
|
||||||
tr("Would you like to create a local branch?"),
|
tr("Would you like to create a local branch?"),
|
||||||
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
|
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
|
||||||
return arguments;
|
return arguments;
|
||||||
@@ -1275,7 +1277,7 @@ QStringList GitClient::setupCheckoutArguments(const QString &workingDirectory,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BranchAddDialog branchAddDialog(localBranches, true, Core::ICore::mainWindow());
|
BranchAddDialog branchAddDialog(localBranches, true, ICore::mainWindow());
|
||||||
branchAddDialog.setTrackedBranchName(remoteBranch, true);
|
branchAddDialog.setTrackedBranchName(remoteBranch, true);
|
||||||
|
|
||||||
if (branchAddDialog.exec() != QDialog::Accepted)
|
if (branchAddDialog.exec() != QDialog::Accepted)
|
||||||
@@ -1434,7 +1436,7 @@ bool GitClient::synchronousInit(const QString &workingDirectory)
|
|||||||
outputWindow()->appendError(commandOutputFromLocal8Bit(errorText));
|
outputWindow()->appendError(commandOutputFromLocal8Bit(errorText));
|
||||||
} else {
|
} else {
|
||||||
// TODO: Turn this into a VcsBaseClient and use resetCachedVcsInfo(...)
|
// TODO: Turn this into a VcsBaseClient and use resetCachedVcsInfo(...)
|
||||||
Core::VcsManager::resetVersionControlForDirectory(workingDirectory);
|
VcsManager::resetVersionControlForDirectory(workingDirectory);
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1842,7 +1844,7 @@ QString GitClient::synchronousStash(const QString &workingDirectory, const QStri
|
|||||||
message = creatorStashMessage(messageKeyword);
|
message = creatorStashMessage(messageKeyword);
|
||||||
do {
|
do {
|
||||||
if ((flags & StashPromptDescription)) {
|
if ((flags & StashPromptDescription)) {
|
||||||
if (!inputText(Core::ICore::mainWindow(),
|
if (!inputText(ICore::mainWindow(),
|
||||||
tr("Stash Description"), tr("Description:"), &message))
|
tr("Stash Description"), tr("Description:"), &message))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2287,7 +2289,7 @@ void GitClient::updateSubmodulesIfNeeded(const QString &workingDirectory, bool p
|
|||||||
if (!updateNeeded)
|
if (!updateNeeded)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (prompt && QMessageBox::question(Core::ICore::mainWindow(), tr("Submodules Found"),
|
if (prompt && QMessageBox::question(ICore::mainWindow(), tr("Submodules Found"),
|
||||||
tr("Would you like to update submodules?"),
|
tr("Would you like to update submodules?"),
|
||||||
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
|
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
|
||||||
return;
|
return;
|
||||||
@@ -2466,7 +2468,7 @@ void GitClient::continuePreviousGitCommand(const QString &workingDirectory,
|
|||||||
}
|
}
|
||||||
|
|
||||||
QMessageBox msgBox(QMessageBox::Question, msgBoxTitle, msgBoxText,
|
QMessageBox msgBox(QMessageBox::Question, msgBoxTitle, msgBoxText,
|
||||||
QMessageBox::NoButton, Core::ICore::mainWindow());
|
QMessageBox::NoButton, ICore::mainWindow());
|
||||||
if (hasChanges || isRebase)
|
if (hasChanges || isRebase)
|
||||||
msgBox.addButton(hasChanges ? buttonName : tr("Skip"), QMessageBox::AcceptRole);
|
msgBox.addButton(hasChanges ? buttonName : tr("Skip"), QMessageBox::AcceptRole);
|
||||||
msgBox.addButton(QMessageBox::Abort);
|
msgBox.addButton(QMessageBox::Abort);
|
||||||
@@ -2995,7 +2997,7 @@ GitClient::RevertResult GitClient::revertI(QStringList files,
|
|||||||
|
|
||||||
// Ask to revert (to do: Handle lists with a selection dialog)
|
// Ask to revert (to do: Handle lists with a selection dialog)
|
||||||
const QMessageBox::StandardButton answer
|
const QMessageBox::StandardButton answer
|
||||||
= QMessageBox::question(Core::ICore::mainWindow(),
|
= QMessageBox::question(ICore::mainWindow(),
|
||||||
tr("Revert"),
|
tr("Revert"),
|
||||||
tr("The file has been changed. Do you want to revert it?"),
|
tr("The file has been changed. Do you want to revert it?"),
|
||||||
QMessageBox::Yes | QMessageBox::No,
|
QMessageBox::Yes | QMessageBox::No,
|
||||||
@@ -3150,7 +3152,7 @@ void GitClient::handleMergeConflicts(const QString &workingDir, const QString &c
|
|||||||
else
|
else
|
||||||
message = tr("Conflicts detected.");
|
message = tr("Conflicts detected.");
|
||||||
QMessageBox mergeOrAbort(QMessageBox::Question, tr("Conflicts Detected"), message,
|
QMessageBox mergeOrAbort(QMessageBox::Question, tr("Conflicts Detected"), message,
|
||||||
QMessageBox::NoButton, Core::ICore::mainWindow());
|
QMessageBox::NoButton, ICore::mainWindow());
|
||||||
QPushButton *mergeToolButton = mergeOrAbort.addButton(tr("Run &Merge Tool"),
|
QPushButton *mergeToolButton = mergeOrAbort.addButton(tr("Run &Merge Tool"),
|
||||||
QMessageBox::AcceptRole);
|
QMessageBox::AcceptRole);
|
||||||
mergeOrAbort.addButton(QMessageBox::Ignore);
|
mergeOrAbort.addButton(QMessageBox::Ignore);
|
||||||
@@ -3201,7 +3203,7 @@ void GitClient::subversionLog(const QString &workingDirectory)
|
|||||||
|
|
||||||
// Create a command editor, no highlighting or interaction.
|
// Create a command editor, no highlighting or interaction.
|
||||||
const QString title = tr("Git SVN Log");
|
const QString title = tr("Git SVN Log");
|
||||||
const Core::Id editorId = Git::Constants::C_GIT_COMMAND_LOG_EDITOR;
|
const Id editorId = Git::Constants::C_GIT_COMMAND_LOG_EDITOR;
|
||||||
const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, QStringList());
|
const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, QStringList());
|
||||||
VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("svnLog", sourceFile);
|
VcsBase::VcsBaseEditorWidget *editor = findExistingVCSEditor("svnLog", sourceFile);
|
||||||
if (!editor)
|
if (!editor)
|
||||||
@@ -3476,7 +3478,7 @@ bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
|
|||||||
const Utils::SynchronousProcessResponse resp =
|
const Utils::SynchronousProcessResponse resp =
|
||||||
synchronousGit(workingDirectory.path(), arguments, flags);
|
synchronousGit(workingDirectory.path(), arguments, flags);
|
||||||
// TODO: Turn this into a VcsBaseClient and use resetCachedVcsInfo(...)
|
// TODO: Turn this into a VcsBaseClient and use resetCachedVcsInfo(...)
|
||||||
Core::VcsManager::resetVersionControlForDirectory(workingDirectory.absolutePath());
|
VcsManager::resetVersionControlForDirectory(workingDirectory.absolutePath());
|
||||||
return (resp.result == Utils::SynchronousProcessResponse::Finished);
|
return (resp.result == Utils::SynchronousProcessResponse::Finished);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3585,7 +3587,7 @@ void GitClient::StashInfo::stashPrompt(const QString &command, const QString &st
|
|||||||
tr("What would you like to do with local changes in:")
|
tr("What would you like to do with local changes in:")
|
||||||
+ QLatin1String("\n\n\"")
|
+ QLatin1String("\n\n\"")
|
||||||
+ QDir::toNativeSeparators(m_workingDir) + QLatin1Char('\"'),
|
+ QDir::toNativeSeparators(m_workingDir) + QLatin1Char('\"'),
|
||||||
QMessageBox::NoButton, Core::ICore::mainWindow());
|
QMessageBox::NoButton, ICore::mainWindow());
|
||||||
|
|
||||||
msgBox.setDetailedText(statusOutput);
|
msgBox.setDetailedText(statusOutput);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user