Merge remote-tracking branch 'origin/2.7'

Conflicts:
	src/plugins/projectexplorer/devicesupport/devicemanager.cpp

Change-Id: I1d46128f530428315e7ab5d52c8115036371487f
This commit is contained in:
Eike Ziller
2013-03-04 15:07:19 +01:00
79 changed files with 1070 additions and 467 deletions

View File

@@ -365,6 +365,8 @@ const char *GitClient::decorateOption = "--decorate";
QString GitClient::findRepositoryForDirectory(const QString &dir)
{
if (dir.endsWith(QLatin1String("/.git")) || dir.contains(QLatin1String("/.git/")))
return QString();
// Find a directory to run git in:
const QString root = QDir::rootPath();
const QString home = QDir::homePath();
@@ -1459,8 +1461,7 @@ VcsBase::Command *GitClient::createCommand(const QString &workingDirectory,
connect(command, SIGNAL(outputData(QByteArray)), editor, SLOT(setPlainTextDataFiltered(QByteArray)));
}
if (outputWindow())
connect(command, SIGNAL(errorText(QString)), outputWindow(), SLOT(appendError(QString)));
connect(command, SIGNAL(errorText(QString)), outputWindow(), SLOT(appendError(QString)));
return command;
}
@@ -1822,7 +1823,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
commitData->panelInfo.repository = repoDirectory;
QString gitDir = GitClient::findGitDirForRepository(repoDirectory);
QString gitDir = findGitDirForRepository(repoDirectory);
if (gitDir.isEmpty()) {
*errorMessage = tr("The repository \"%1\" is not initialized.").arg(repoDirectory);
return false;
@@ -2151,7 +2152,7 @@ bool GitClient::executeAndHandleConflicts(const QString &workingDirectory,
handleMergeConflicts(workingDirectory, conflictedCommit.cap(1), abortCommand);
} else if (resp.stdErr.contains(QLatin1String("conflict"))) {
// cherry-pick/revert conflict is output to stdErr
QRegExp conflictedCommit(QLatin1String("could not (?:apply|revert) ([^\\n]*)$"));
QRegExp conflictedCommit(QLatin1String("could not (?:apply|revert) ([^\\n]*)"));
conflictedCommit.indexIn(resp.stdErr);
handleMergeConflicts(workingDirectory, conflictedCommit.cap(1), abortCommand);
}
@@ -2444,9 +2445,11 @@ QString GitClient::readConfig(const QString &workingDirectory, const QStringList
QByteArray outputText;
QByteArray errorText;
if (fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText, false))
return commandOutputFromLocal8Bit(outputText);
return QString();
if (!fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText, false))
return QString();
if (Utils::HostOsInfo::isWindowsHost())
return QString::fromUtf8(outputText).remove(QLatin1Char('\r'));
return commandOutputFromLocal8Bit(outputText);
}
// Read a single-line config value, return trimmed

View File

@@ -918,11 +918,15 @@ bool GitPlugin::submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *submitEdi
// Prompt user. Force a prompt unless submit was actually invoked (that
// is, the editor was closed or shutdown).
bool *promptData = m_settings.boolPointer(GitSettings::promptOnSubmitKey);
const VcsBase::VcsBaseSubmitEditor::PromptSubmitResult answer =
editor->promptSubmit(tr("Closing Git Editor"),
tr("Do you want to commit the change?"),
tr("Git will not accept this commit. Do you want to continue to edit it?"),
promptData, !m_submitActionTriggered, false);
VcsBase::VcsBaseSubmitEditor::PromptSubmitResult answer;
if (editor->forceClose()) {
answer = VcsBase::VcsBaseSubmitEditor::SubmitDiscarded;
} else {
answer = editor->promptSubmit(tr("Closing Git Editor"),
tr("Do you want to commit the change?"),
tr("Git will not accept this commit. Do you want to continue to edit it?"),
promptData, !m_submitActionTriggered, false);
}
m_submitActionTriggered = false;
switch (answer) {
case VcsBase::VcsBaseSubmitEditor::SubmitCanceled:

View File

@@ -34,6 +34,7 @@
#include "gitsubmiteditor.h"
#include "gitsubmiteditorwidget.h"
#include <coreplugin/editormanager/editormanager.h>
#include <utils/qtcassert.h>
#include <vcsbase/submitfilemodel.h>
#include <vcsbase/vcsbaseoutputwindow.h>
@@ -85,7 +86,8 @@ private:
GitSubmitEditor::GitSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *parameters, QWidget *parent) :
VcsBaseSubmitEditor(parameters, new GitSubmitEditorWidget(parent)),
m_model(0),
m_amend(false)
m_amend(false),
m_forceClose(false)
{
connect(this, SIGNAL(diffSelectedFiles(QList<int>)), this, SLOT(slotDiffSelected(QList<int>)));
}
@@ -162,10 +164,13 @@ void GitSubmitEditor::updateFileModel()
GitClient *client = GitPlugin::instance()->gitClient();
QString errorMessage, commitTemplate;
CommitData data;
if (client->getCommitData(m_workingDirectory, m_amend, &commitTemplate, &data, &errorMessage))
if (client->getCommitData(m_workingDirectory, m_amend, &commitTemplate, &data, &errorMessage)) {
setCommitData(data);
else
} else {
VcsBase::VcsBaseOutputWindow::instance()->append(errorMessage);
m_forceClose = true;
Core::EditorManager::instance()->closeEditors(QList<IEditor*>() << this);
}
}
GitSubmitEditorPanelData GitSubmitEditor::panelData() const

View File

@@ -54,6 +54,7 @@ public:
void setCommitData(const CommitData &);
void setAmend(bool amend);
GitSubmitEditorPanelData panelData() const;
bool forceClose() const { return m_forceClose; }
signals:
void diff(const QStringList &unstagedFiles, const QStringList &stagedFiles);
@@ -72,6 +73,7 @@ private:
VcsBase::SubmitFileModel *m_model;
QString m_commitEncoding;
bool m_amend;
bool m_forceClose;
QString m_workingDirectory;
};