From d1ebbcb810c9ca129b9b5cca673608c7e20a2617 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <qtc-committer@nokia.com> Date: Wed, 3 Dec 2008 15:56:24 +0100 Subject: [PATCH] Fixes: git commit fails due to wrong working directory Details: Execute git status from repo directory --- src/plugins/git/gitclient.cpp | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 0abdb630bda..5f7ebd1855d 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -49,6 +49,7 @@ #include <QtCore/QRegExp> #include <QtCore/QTemporaryFile> #include <QtCore/QFuture> +#include <QtCore/QTime> #include <QtGui/QErrorMessage> @@ -76,6 +77,12 @@ inline Core::IEditor* locateEditor(const Core::ICore *core, const char *property return 0; } +static QString formatCommand(const QString &binary, const QStringList &args) +{ + const QString timeStamp = QTime::currentTime().toString(QLatin1String("HH:mm")); + return GitClient::tr("%1 Executing: %2 %3\n").arg(timeStamp, binary, args.join(QString(QLatin1Char(' ')))); +} + GitClient::GitClient(GitPlugin* plugin, Core::ICore *core) : m_msgWait(tr("Waiting for data...")), m_plugin(plugin), @@ -331,7 +338,8 @@ void GitClient::executeGit(const QString &workingDirectory, const QStringList &a { if (Git::Constants::debug) qDebug() << "executeGit" << workingDirectory << arguments << editor; - outputWindow->clearContents(); + + m_plugin->m_outputWindow->append(formatCommand(QLatin1String(kGitCommand), arguments)); QProcess process; ProjectExplorer::Environment environment = ProjectExplorer::Environment::systemEnvironment(); @@ -363,8 +371,11 @@ bool GitClient::synchronousGit(const QString &workingDirectory { if (Git::Constants::debug) qDebug() << "synchronousGit" << workingDirectory << arguments; - QProcess process; + const QString binary = QLatin1String(kGitCommand); + + m_plugin->m_outputWindow->append(formatCommand(binary, arguments)); + QProcess process; process.setWorkingDirectory(workingDirectory); ProjectExplorer::Environment environment = ProjectExplorer::Environment::systemEnvironment(); @@ -372,7 +383,7 @@ bool GitClient::synchronousGit(const QString &workingDirectory environment.set(QLatin1String("PATH"), m_plugin->m_settingsPage->path()); process.setEnvironment(environment.toStringList()); - process.start(QLatin1String(kGitCommand), arguments); + process.start(binary, arguments); if (!process.waitForFinished()) { if (errorText) *errorText = "Error: Git timed out"; @@ -477,6 +488,9 @@ bool GitClient::getCommitData(const QString &workingDirectory, CommitData *d, QString *errorMessage) { + if (Git::Constants::debug) + qDebug() << Q_FUNC_INFO << workingDirectory; + d->clear(); // Find repo @@ -506,9 +520,10 @@ bool GitClient::getCommitData(const QString &workingDirectory, QByteArray outputText; QByteArray errorText; QStringList statusArgs(QLatin1String("status")); + if (untrackedFilesInCommit) statusArgs << QLatin1String("-u"); - const bool statusRc = synchronousGit(workingDirectory, statusArgs, &outputText, &errorText); + const bool statusRc = synchronousGit(repoDirectory, statusArgs, &outputText, &errorText); if (!statusRc) { // Something fatal if (!outputText.contains(kBranchIndicatorC)) { @@ -565,24 +580,24 @@ bool GitClient::getCommitData(const QString &workingDirectory, } // addAndCommit: -bool GitClient::addAndCommit(const QString &workingDirectory, +bool GitClient::addAndCommit(const QString &repositoryDirectory, const GitSubmitEditorPanelData &data, const QString &messageFile, const QStringList &checkedFiles, const QStringList &origCommitFiles) { if (Git::Constants::debug) - qDebug() << "GitClient::addAndCommit:" << workingDirectory << checkedFiles << origCommitFiles; + qDebug() << "GitClient::addAndCommit:" << repositoryDirectory << checkedFiles << origCommitFiles; // Do we need to reset any files that had been added before // (did the user uncheck any previously added files) const QSet<QString> resetFiles = origCommitFiles.toSet().subtract(checkedFiles.toSet()); if (!resetFiles.empty()) - if (!synchronousReset(workingDirectory, resetFiles.toList())) + if (!synchronousReset(repositoryDirectory, resetFiles.toList())) return false; // Re-add all to make sure we have the latest changes - if (!synchronousAdd(workingDirectory, checkedFiles)) + if (!synchronousAdd(repositoryDirectory, checkedFiles)) return false; // Do the final commit @@ -593,7 +608,7 @@ bool GitClient::addAndCommit(const QString &workingDirectory, QByteArray outputText; QByteArray errorText; - const bool rc = synchronousGit(workingDirectory, args, &outputText, &errorText); + const bool rc = synchronousGit(repositoryDirectory, args, &outputText, &errorText); const QString message = rc ? tr("Committed %n file(s).", 0, checkedFiles.size()) : tr("Unable to commit %n file(s): %1", 0, checkedFiles.size()).arg(QString::fromLocal8Bit(errorText)); -- GitLab