forked from qt-creator/qt-creator
Vcs: Move vcsFullySynchronousExec into VcsBaseClientImpl
Use that in the gitplugin in favor of fullySynchronousGit. Change-Id: Ifd981f3fc5e87e16ad52caf32c204f81acffe586 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -634,8 +634,8 @@ bool GitClient::managesFile(const QString &workingDirectory, const QString &file
|
|||||||
QByteArray output;
|
QByteArray output;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("ls-files") << QLatin1String("--error-unmatch") << fileName;
|
arguments << QLatin1String("ls-files") << QLatin1String("--error-unmatch") << fileName;
|
||||||
return fullySynchronousGit(workingDirectory, arguments, &output, 0,
|
return vcsFullySynchronousExec(workingDirectory, arguments, &output, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
}
|
}
|
||||||
|
|
||||||
VcsBaseEditorWidget *GitClient::findExistingVCSEditor(const char *registerDynamicProperty,
|
VcsBaseEditorWidget *GitClient::findExistingVCSEditor(const char *registerDynamicProperty,
|
||||||
@@ -976,15 +976,14 @@ bool GitClient::synchronousCheckout(const QString &workingDirectory,
|
|||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
QStringList arguments = setupCheckoutArguments(workingDirectory, ref);
|
QStringList arguments = setupCheckoutArguments(workingDirectory, ref);
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText, 0,
|
||||||
VcsBasePlugin::ExpectRepoChanges);
|
VcsBasePlugin::ExpectRepoChanges);
|
||||||
VcsOutputWindow::append(commandOutputFromLocal8Bit(outputText));
|
VcsOutputWindow::append(commandOutputFromLocal8Bit(outputText));
|
||||||
if (!rc) {
|
if (rc)
|
||||||
|
updateSubmodulesIfNeeded(workingDirectory, true);
|
||||||
|
else
|
||||||
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
||||||
return false;
|
return rc;
|
||||||
}
|
|
||||||
updateSubmodulesIfNeeded(workingDirectory, true);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* method used to setup arguments for checkout, in case user wants to create local branch */
|
/* method used to setup arguments for checkout, in case user wants to create local branch */
|
||||||
@@ -1072,22 +1071,22 @@ void GitClient::addFile(const QString &workingDirectory, const QString &fileName
|
|||||||
bool GitClient::synchronousLog(const QString &workingDirectory, const QStringList &arguments,
|
bool GitClient::synchronousLog(const QString &workingDirectory, const QStringList &arguments,
|
||||||
QString *output, QString *errorMessageIn, unsigned flags)
|
QString *output, QString *errorMessageIn, unsigned flags)
|
||||||
{
|
{
|
||||||
QByteArray outputText;
|
QByteArray outputData;
|
||||||
QByteArray errorText;
|
QByteArray errorData;
|
||||||
QStringList allArguments;
|
QStringList allArguments;
|
||||||
allArguments << QLatin1String("log") << QLatin1String(noColorOption);
|
allArguments << QLatin1String("log") << QLatin1String(noColorOption);
|
||||||
allArguments.append(arguments);
|
allArguments.append(arguments);
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, allArguments, &outputText, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, allArguments, &outputData, &errorData, flags);
|
||||||
flags);
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
if (QTextCodec *codec = encoding(workingDirectory, "i18n.logOutputEncoding"))
|
if (QTextCodec *codec = encoding(workingDirectory, "i18n.logOutputEncoding"))
|
||||||
*output = codec->toUnicode(outputText);
|
*output = codec->toUnicode(outputData);
|
||||||
else
|
else
|
||||||
*output = commandOutputFromLocal8Bit(outputText);
|
*output = commandOutputFromLocal8Bit(outputData);
|
||||||
} else {
|
} else {
|
||||||
msgCannotRun(tr("Cannot obtain log of \"%1\": %2")
|
msgCannotRun(tr("Cannot obtain log of \"%1\": %2")
|
||||||
.arg(QDir::toNativeSeparators(workingDirectory),
|
.arg(QDir::toNativeSeparators(workingDirectory),
|
||||||
commandOutputFromLocal8Bit(errorText)), errorMessageIn);
|
commandOutputFromLocal8Bit(errorData)), errorMessageIn);
|
||||||
|
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1095,16 +1094,9 @@ bool GitClient::synchronousLog(const QString &workingDirectory, const QStringLis
|
|||||||
bool GitClient::synchronousAdd(const QString &workingDirectory, const QStringList &files)
|
bool GitClient::synchronousAdd(const QString &workingDirectory, const QStringList &files)
|
||||||
{
|
{
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("add") << files;
|
arguments << QLatin1String("add") << files;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
return vcsFullySynchronousExec(workingDirectory, arguments, &outputText);
|
||||||
if (!rc) {
|
|
||||||
msgCannotRun(tr("Cannot add %n file(s) to \"%1\": %2", 0, files.size())
|
|
||||||
.arg(QDir::toNativeSeparators(workingDirectory),
|
|
||||||
commandOutputFromLocal8Bit(errorText)), 0);
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::synchronousDelete(const QString &workingDirectory,
|
bool GitClient::synchronousDelete(const QString &workingDirectory,
|
||||||
@@ -1112,19 +1104,12 @@ bool GitClient::synchronousDelete(const QString &workingDirectory,
|
|||||||
const QStringList &files)
|
const QStringList &files)
|
||||||
{
|
{
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("rm");
|
arguments << QLatin1String("rm");
|
||||||
if (force)
|
if (force)
|
||||||
arguments << QLatin1String("--force");
|
arguments << QLatin1String("--force");
|
||||||
arguments.append(files);
|
arguments.append(files);
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
return vcsFullySynchronousExec(workingDirectory, arguments, &outputText);
|
||||||
if (!rc) {
|
|
||||||
msgCannotRun(tr("Cannot remove %n file(s) from \"%1\": %2", 0, files.size())
|
|
||||||
.arg(QDir::toNativeSeparators(workingDirectory),
|
|
||||||
commandOutputFromLocal8Bit(errorText)), 0);
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::synchronousMove(const QString &workingDirectory,
|
bool GitClient::synchronousMove(const QString &workingDirectory,
|
||||||
@@ -1132,17 +1117,11 @@ bool GitClient::synchronousMove(const QString &workingDirectory,
|
|||||||
const QString &to)
|
const QString &to)
|
||||||
{
|
{
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("mv");
|
arguments << QLatin1String("mv");
|
||||||
arguments << (from);
|
arguments << (from);
|
||||||
arguments << (to);
|
arguments << (to);
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
return vcsFullySynchronousExec(workingDirectory, arguments, &outputText);
|
||||||
if (!rc) {
|
|
||||||
msgCannotRun(tr("Cannot move from \"%1\" to \"%2\": %3")
|
|
||||||
.arg(from, to, commandOutputFromLocal8Bit(errorText)), 0);
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::synchronousReset(const QString &workingDirectory,
|
bool GitClient::synchronousReset(const QString &workingDirectory,
|
||||||
@@ -1157,7 +1136,7 @@ bool GitClient::synchronousReset(const QString &workingDirectory,
|
|||||||
arguments << QLatin1String("--hard");
|
arguments << QLatin1String("--hard");
|
||||||
else
|
else
|
||||||
arguments << QLatin1String(HEAD) << QLatin1String("--") << files;
|
arguments << QLatin1String(HEAD) << QLatin1String("--") << files;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText, &errorText);
|
||||||
const QString output = commandOutputFromLocal8Bit(outputText);
|
const QString output = commandOutputFromLocal8Bit(outputText);
|
||||||
VcsOutputWindow::append(output);
|
VcsOutputWindow::append(output);
|
||||||
// Note that git exits with 1 even if the operation is successful
|
// Note that git exits with 1 even if the operation is successful
|
||||||
@@ -1182,17 +1161,12 @@ bool GitClient::synchronousReset(const QString &workingDirectory,
|
|||||||
bool GitClient::synchronousInit(const QString &workingDirectory)
|
bool GitClient::synchronousInit(const QString &workingDirectory)
|
||||||
{
|
{
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
|
||||||
const QStringList arguments(QLatin1String("init"));
|
const QStringList arguments(QLatin1String("init"));
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText);
|
||||||
// '[Re]Initialized...'
|
// '[Re]Initialized...'
|
||||||
VcsOutputWindow::append(commandOutputFromLocal8Bit(outputText));
|
VcsOutputWindow::append(commandOutputFromLocal8Bit(outputText));
|
||||||
if (!rc) {
|
if (rc)
|
||||||
VcsOutputWindow::appendError(commandOutputFromLocal8Bit(errorText));
|
resetCachedVcsInfo(workingDirectory);
|
||||||
} else {
|
|
||||||
// TODO: Turn this into a VcsBaseClient and use resetCachedVcsInfo(...)
|
|
||||||
VcsManager::resetVersionControlForDirectory(workingDirectory);
|
|
||||||
}
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1217,8 +1191,8 @@ bool GitClient::synchronousCheckoutFiles(const QString &workingDirectory,
|
|||||||
if (revertStaging)
|
if (revertStaging)
|
||||||
arguments << revision;
|
arguments << revision;
|
||||||
arguments << QLatin1String("--") << files;
|
arguments << QLatin1String("--") << files;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText, &errorText,
|
||||||
VcsBasePlugin::ExpectRepoChanges);
|
VcsBasePlugin::ExpectRepoChanges);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
const QString fileArg = files.join(QLatin1String(", "));
|
const QString fileArg = files.join(QLatin1String(", "));
|
||||||
//: Meaning of the arguments: %1: revision, %2: files, %3: repository,
|
//: Meaning of the arguments: %1: revision, %2: files, %3: repository,
|
||||||
@@ -1284,9 +1258,9 @@ bool GitClient::synchronousRevListCmd(const QString &workingDirectory, const QSt
|
|||||||
QStringList args(QLatin1String("rev-list"));
|
QStringList args(QLatin1String("rev-list"));
|
||||||
args << QLatin1String(noColorOption) << arguments;
|
args << QLatin1String(noColorOption) << arguments;
|
||||||
|
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, args, &outputTextData, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, args, &outputTextData, &errorText,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
if (!rc) {
|
if (rc) {
|
||||||
msgCannotRun(args, workingDirectory, errorText, errorMessage);
|
msgCannotRun(args, workingDirectory, errorText, errorMessage);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1353,8 +1327,8 @@ QString GitClient::synchronousCurrentLocalBranch(const QString &workingDirectory
|
|||||||
QByteArray outputTextData;
|
QByteArray outputTextData;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("symbolic-ref") << QLatin1String(HEAD);
|
arguments << QLatin1String("symbolic-ref") << QLatin1String(HEAD);
|
||||||
if (fullySynchronousGit(workingDirectory, arguments, &outputTextData, 0,
|
if (vcsFullySynchronousExec(workingDirectory, arguments, &outputTextData, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging)) {
|
VcsBasePlugin::SuppressCommandLogging)) {
|
||||||
QString branch = commandOutputFromLocal8Bit(outputTextData.trimmed());
|
QString branch = commandOutputFromLocal8Bit(outputTextData.trimmed());
|
||||||
const QString refsHeadsPrefix = QLatin1String("refs/heads/");
|
const QString refsHeadsPrefix = QLatin1String("refs/heads/");
|
||||||
if (branch.startsWith(refsHeadsPrefix)) {
|
if (branch.startsWith(refsHeadsPrefix)) {
|
||||||
@@ -1373,8 +1347,8 @@ bool GitClient::synchronousHeadRefs(const QString &workingDirectory, QStringList
|
|||||||
<< QLatin1String("--abbrev=10") << QLatin1String("--dereference");
|
<< QLatin1String("--abbrev=10") << QLatin1String("--dereference");
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, args, &outputText, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, args, &outputText, &errorText,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
msgCannotRun(args, workingDirectory, errorText, errorMessage);
|
msgCannotRun(args, workingDirectory, errorText, errorMessage);
|
||||||
return false;
|
return false;
|
||||||
@@ -1431,7 +1405,7 @@ QString GitClient::synchronousTopic(const QString &workingDirectory) const
|
|||||||
QByteArray output;
|
QByteArray output;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("describe");
|
arguments << QLatin1String("describe");
|
||||||
if (fullySynchronousGit(workingDirectory, arguments, &output, 0, VcsBasePlugin::NoOutput)) {
|
if (vcsFullySynchronousExec(workingDirectory, arguments, &output, 0, VcsBasePlugin::NoOutput)) {
|
||||||
const QString describeOutput = commandOutputFromLocal8Bit(output.trimmed());
|
const QString describeOutput = commandOutputFromLocal8Bit(output.trimmed());
|
||||||
if (!describeOutput.isEmpty())
|
if (!describeOutput.isEmpty())
|
||||||
return describeOutput;
|
return describeOutput;
|
||||||
@@ -1446,8 +1420,8 @@ bool GitClient::synchronousRevParseCmd(const QString &workingDirectory, const QS
|
|||||||
arguments << ref;
|
arguments << ref;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText, &errorText,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
*output = commandOutputFromLocal8Bit(outputText.trimmed());
|
*output = commandOutputFromLocal8Bit(outputText.trimmed());
|
||||||
if (!rc)
|
if (!rc)
|
||||||
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
||||||
@@ -1471,8 +1445,8 @@ void GitClient::synchronousTagsForCommit(const QString &workingDirectory, const
|
|||||||
QByteArray pr;
|
QByteArray pr;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("describe") << QLatin1String("--contains") << revision;
|
arguments << QLatin1String("describe") << QLatin1String("--contains") << revision;
|
||||||
fullySynchronousGit(workingDirectory, arguments, &pr, 0,
|
vcsFullySynchronousExec(workingDirectory, arguments, &pr, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
int tilde = pr.indexOf('~');
|
int tilde = pr.indexOf('~');
|
||||||
if (tilde != -1)
|
if (tilde != -1)
|
||||||
pr.truncate(tilde);
|
pr.truncate(tilde);
|
||||||
@@ -1488,8 +1462,8 @@ void GitClient::synchronousTagsForCommit(const QString &workingDirectory, const
|
|||||||
arguments.clear();
|
arguments.clear();
|
||||||
arguments << QLatin1String("describe") << QLatin1String("--tags")
|
arguments << QLatin1String("describe") << QLatin1String("--tags")
|
||||||
<< QLatin1String("--abbrev=0") << p;
|
<< QLatin1String("--abbrev=0") << p;
|
||||||
fullySynchronousGit(workingDirectory, arguments, &pf, 0,
|
vcsFullySynchronousExec(workingDirectory, arguments, &pf, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
pf.truncate(pf.lastIndexOf('\n'));
|
pf.truncate(pf.lastIndexOf('\n'));
|
||||||
if (!pf.isEmpty()) {
|
if (!pf.isEmpty()) {
|
||||||
if (!follows.isEmpty())
|
if (!follows.isEmpty())
|
||||||
@@ -1523,8 +1497,8 @@ bool GitClient::isRemoteCommit(const QString &workingDirectory, const QString &c
|
|||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
arguments << QLatin1String("branch") << QLatin1String("-r")
|
arguments << QLatin1String("branch") << QLatin1String("-r")
|
||||||
<< QLatin1String("--contains") << commit;
|
<< QLatin1String("--contains") << commit;
|
||||||
fullySynchronousGit(workingDirectory, arguments, &outputText, 0,
|
vcsFullySynchronousExec(workingDirectory, arguments, &outputText, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
return !outputText.isEmpty();
|
return !outputText.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1533,8 +1507,8 @@ bool GitClient::isFastForwardMerge(const QString &workingDirectory, const QStrin
|
|||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
arguments << QLatin1String("merge-base") << QLatin1String(HEAD) << branch;
|
arguments << QLatin1String("merge-base") << QLatin1String(HEAD) << branch;
|
||||||
fullySynchronousGit(workingDirectory, arguments, &outputText, 0,
|
vcsFullySynchronousExec(workingDirectory, arguments, &outputText, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
return commandOutputFromLocal8Bit(outputText).trimmed()
|
return commandOutputFromLocal8Bit(outputText).trimmed()
|
||||||
== synchronousTopRevision(workingDirectory);
|
== synchronousTopRevision(workingDirectory);
|
||||||
}
|
}
|
||||||
@@ -1550,7 +1524,7 @@ QString GitClient::synchronousShortDescription(const QString &workingDirectory,
|
|||||||
arguments << QLatin1String("log") << QLatin1String(noColorOption)
|
arguments << QLatin1String("log") << QLatin1String(noColorOption)
|
||||||
<< (QLatin1String("--pretty=format:") + format)
|
<< (QLatin1String("--pretty=format:") + format)
|
||||||
<< QLatin1String("--max-count=1") << revision;
|
<< QLatin1String("--max-count=1") << revision;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputTextData, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputTextData, &errorText);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
VcsOutputWindow::appendSilently(tr("Cannot describe revision \"%1\" in \"%2\": %3")
|
VcsOutputWindow::appendSilently(tr("Cannot describe revision \"%1\" in \"%2\": %3")
|
||||||
.arg(revision, workingDirectory, commandOutputFromLocal8Bit(errorText)));
|
.arg(revision, workingDirectory, commandOutputFromLocal8Bit(errorText)));
|
||||||
@@ -1677,7 +1651,7 @@ bool GitClient::synchronousBranchCmd(const QString &workingDirectory, QStringLis
|
|||||||
branchArgs.push_front(QLatin1String("branch"));
|
branchArgs.push_front(QLatin1String("branch"));
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, branchArgs, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, branchArgs, &outputText, &errorText);
|
||||||
*output = commandOutputFromLocal8Bit(outputText);
|
*output = commandOutputFromLocal8Bit(outputText);
|
||||||
if (!rc)
|
if (!rc)
|
||||||
msgCannotRun(branchArgs, workingDirectory, errorText, errorMessage);
|
msgCannotRun(branchArgs, workingDirectory, errorText, errorMessage);
|
||||||
@@ -1691,7 +1665,7 @@ bool GitClient::synchronousTagCmd(const QString &workingDirectory, QStringList t
|
|||||||
tagArgs.push_front(QLatin1String("tag"));
|
tagArgs.push_front(QLatin1String("tag"));
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, tagArgs, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, tagArgs, &outputText, &errorText);
|
||||||
*output = commandOutputFromLocal8Bit(outputText);
|
*output = commandOutputFromLocal8Bit(outputText);
|
||||||
if (!rc)
|
if (!rc)
|
||||||
msgCannotRun(tagArgs, workingDirectory, errorText, errorMessage);
|
msgCannotRun(tagArgs, workingDirectory, errorText, errorMessage);
|
||||||
@@ -1705,8 +1679,8 @@ bool GitClient::synchronousForEachRefCmd(const QString &workingDirectory, QStrin
|
|||||||
args.push_front(QLatin1String("for-each-ref"));
|
args.push_front(QLatin1String("for-each-ref"));
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, args, &outputText, &errorText,
|
const bool rc = vcsFullySynchronousExec(workingDirectory, args, &outputText, &errorText,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
*output = SynchronousProcess::normalizeNewlines(QString::fromUtf8(outputText));
|
*output = SynchronousProcess::normalizeNewlines(QString::fromUtf8(outputText));
|
||||||
if (!rc)
|
if (!rc)
|
||||||
msgCannotRun(args, workingDirectory, errorText, errorMessage);
|
msgCannotRun(args, workingDirectory, errorText, errorMessage);
|
||||||
@@ -1720,8 +1694,8 @@ bool GitClient::synchronousRemoteCmd(const QString &workingDirectory, QStringLis
|
|||||||
remoteArgs.push_front(QLatin1String("remote"));
|
remoteArgs.push_front(QLatin1String("remote"));
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
if (!fullySynchronousGit(workingDirectory, remoteArgs, &outputText, &errorText,
|
if (!vcsFullySynchronousExec(workingDirectory, remoteArgs, &outputText, &errorText,
|
||||||
silent ? VcsBasePlugin::SuppressCommandLogging : 0)) {
|
silent ? VcsBasePlugin::SuppressCommandLogging : 0)) {
|
||||||
msgCannotRun(remoteArgs, workingDirectory, errorText, errorMessage);
|
msgCannotRun(remoteArgs, workingDirectory, errorText, errorMessage);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1765,7 +1739,7 @@ QStringList GitClient::synchronousSubmoduleStatus(const QString &workingDirector
|
|||||||
|
|
||||||
// get submodule status
|
// get submodule status
|
||||||
arguments << QLatin1String("submodule") << QLatin1String("status");
|
arguments << QLatin1String("submodule") << QLatin1String("status");
|
||||||
if (!fullySynchronousGit(workingDirectory, arguments, &outputTextData, &errorText)) {
|
if (!vcsFullySynchronousExec(workingDirectory, arguments, &outputTextData, &errorText)) {
|
||||||
msgCannotRun(tr("Cannot retrieve submodule status of \"%1\": %2")
|
msgCannotRun(tr("Cannot retrieve submodule status of \"%1\": %2")
|
||||||
.arg(QDir::toNativeSeparators(workingDirectory),
|
.arg(QDir::toNativeSeparators(workingDirectory),
|
||||||
commandOutputFromLocal8Bit(errorText)), errorMessage);
|
commandOutputFromLocal8Bit(errorText)), errorMessage);
|
||||||
@@ -1842,7 +1816,7 @@ bool GitClient::synchronousShow(const QString &workingDirectory, const QString &
|
|||||||
args << QLatin1String(decorateOption) << QLatin1String(noColorOption) << id;
|
args << QLatin1String(decorateOption) << QLatin1String(noColorOption) << id;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, args, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, args, &outputText, &errorText);
|
||||||
if (rc)
|
if (rc)
|
||||||
*output = commandOutputFromLocal8Bit(outputText);
|
*output = commandOutputFromLocal8Bit(outputText);
|
||||||
else
|
else
|
||||||
@@ -1857,7 +1831,7 @@ bool GitClient::cleanList(const QString &workingDirectory, const QString &flag,
|
|||||||
args << QLatin1String("clean") << QLatin1String("--dry-run") << flag;
|
args << QLatin1String("clean") << QLatin1String("--dry-run") << flag;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, args, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, args, &outputText, &errorText);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
msgCannotRun(QStringList(QLatin1String("clean")), workingDirectory,
|
msgCannotRun(QStringList(QLatin1String("clean")), workingDirectory,
|
||||||
errorText, errorMessage);
|
errorText, errorMessage);
|
||||||
@@ -1896,12 +1870,14 @@ bool GitClient::synchronousApplyPatch(const QString &workingDirectory,
|
|||||||
args << QLatin1String("apply") << QLatin1String("--whitespace=fix") << arguments << file;
|
args << QLatin1String("apply") << QLatin1String("--whitespace=fix") << arguments << file;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, args, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, args, &outputText, &errorText);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
if (!errorText.isEmpty())
|
if (!errorText.isEmpty())
|
||||||
*errorMessage = tr("There were warnings while applying \"%1\" to \"%2\":\n%3").arg(file, workingDirectory, commandOutputFromLocal8Bit(errorText));
|
*errorMessage = tr("There were warnings while applying \"%1\" to \"%2\":\n%3")
|
||||||
|
.arg(file, workingDirectory, commandOutputFromLocal8Bit(errorText));
|
||||||
} else {
|
} else {
|
||||||
*errorMessage = tr("Cannot apply patch \"%1\" to \"%2\": %3").arg(file, workingDirectory, commandOutputFromLocal8Bit(errorText));
|
*errorMessage = tr("Cannot apply patch \"%1\" to \"%2\": %3")
|
||||||
|
.arg(file, workingDirectory, commandOutputFromLocal8Bit(errorText));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -1983,17 +1959,6 @@ SynchronousProcessResponse GitClient::synchronousGit(const QString &workingDirec
|
|||||||
flags, outputCodec, processEnvironment());
|
flags, outputCodec, processEnvironment());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::fullySynchronousGit(const QString &workingDirectory,
|
|
||||||
const QStringList &gitArguments,
|
|
||||||
QByteArray *outputText,
|
|
||||||
QByteArray *errorText,
|
|
||||||
unsigned flags) const
|
|
||||||
{
|
|
||||||
VcsCommand command(vcsBinary(), workingDirectory, processEnvironment());
|
|
||||||
command.addFlags(flags);
|
|
||||||
return command.runFullySynchronous(gitArguments, vcsTimeoutS(), outputText, errorText);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GitClient::updateSubmodulesIfNeeded(const QString &workingDirectory, bool prompt)
|
void GitClient::updateSubmodulesIfNeeded(const QString &workingDirectory, bool prompt)
|
||||||
{
|
{
|
||||||
if (!m_updatedSubmodules.isEmpty() || submoduleList(workingDirectory).isEmpty())
|
if (!m_updatedSubmodules.isEmpty() || submoduleList(workingDirectory).isEmpty())
|
||||||
@@ -2076,8 +2041,9 @@ GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory, St
|
|||||||
statusArgs << QLatin1String("--ignore-submodules=all");
|
statusArgs << QLatin1String("--ignore-submodules=all");
|
||||||
statusArgs << QLatin1String("--porcelain") << QLatin1String("-b");
|
statusArgs << QLatin1String("--porcelain") << QLatin1String("-b");
|
||||||
|
|
||||||
const bool statusRc = fullySynchronousGit(workingDirectory, statusArgs, &outputText, &errorText,
|
const bool statusRc = vcsFullySynchronousExec(workingDirectory, statusArgs,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
&outputText, &errorText,
|
||||||
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
if (output)
|
if (output)
|
||||||
*output = commandOutputFromLocal8Bit(outputText);
|
*output = commandOutputFromLocal8Bit(outputText);
|
||||||
|
|
||||||
@@ -2426,8 +2392,8 @@ bool GitClient::readDataFromCommit(const QString &repoDirectory, const QString &
|
|||||||
args << QLatin1String("--max-count=1") << QLatin1String("--pretty=format:%h\n%an\n%ae\n%B");
|
args << QLatin1String("--max-count=1") << QLatin1String("--pretty=format:%h\n%an\n%ae\n%B");
|
||||||
args << commit;
|
args << commit;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
if (!fullySynchronousGit(repoDirectory, args, &outputText, 0,
|
if (!vcsFullySynchronousExec(repoDirectory, args, &outputText, 0,
|
||||||
VcsBasePlugin::SuppressCommandLogging)) {
|
VcsBasePlugin::SuppressCommandLogging)) {
|
||||||
if (errorMessage)
|
if (errorMessage)
|
||||||
*errorMessage = tr("Cannot retrieve last commit data of repository \"%1\".").arg(repoDirectory);
|
*errorMessage = tr("Cannot retrieve last commit data of repository \"%1\".").arg(repoDirectory);
|
||||||
return false;
|
return false;
|
||||||
@@ -2674,7 +2640,7 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory,
|
|||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
|
|
||||||
const bool rc = fullySynchronousGit(repositoryDirectory, args, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(repositoryDirectory, args, &outputText, &errorText);
|
||||||
const QString stdErr = commandOutputFromLocal8Bit(errorText);
|
const QString stdErr = commandOutputFromLocal8Bit(errorText);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
VcsOutputWindow::appendMessage(msgCommitted(amendSHA1, commitCount));
|
VcsOutputWindow::appendMessage(msgCommitted(amendSHA1, commitCount));
|
||||||
@@ -2855,12 +2821,8 @@ void GitClient::synchronousAbortCommand(const QString &workingDir, const QString
|
|||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << abortCommand << QLatin1String("--abort");
|
arguments << abortCommand << QLatin1String("--abort");
|
||||||
QByteArray stdOut;
|
QByteArray stdOut;
|
||||||
QByteArray stdErr;
|
vcsFullySynchronousExec(workingDir, arguments, &stdOut, 0, VcsBasePlugin::ExpectRepoChanges);
|
||||||
const bool rc = fullySynchronousGit(workingDir, arguments, &stdOut, &stdErr,
|
|
||||||
VcsBasePlugin::ExpectRepoChanges);
|
|
||||||
VcsOutputWindow::append(commandOutputFromLocal8Bit(stdOut));
|
VcsOutputWindow::append(commandOutputFromLocal8Bit(stdOut));
|
||||||
if (!rc)
|
|
||||||
VcsOutputWindow::appendError(commandOutputFromLocal8Bit(stdErr));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GitClient::synchronousTrackingBranch(const QString &workingDirectory, const QString &branch)
|
QString GitClient::synchronousTrackingBranch(const QString &workingDirectory, const QString &branch)
|
||||||
@@ -2884,19 +2846,13 @@ bool GitClient::synchronousSetTrackingBranch(const QString &workingDirectory,
|
|||||||
const QString &branch, const QString &tracking)
|
const QString &branch, const QString &tracking)
|
||||||
{
|
{
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("branch");
|
arguments << QLatin1String("branch");
|
||||||
if (gitVersion() >= 0x010800)
|
if (gitVersion() >= 0x010800)
|
||||||
arguments << (QLatin1String("--set-upstream-to=") + tracking) << branch;
|
arguments << (QLatin1String("--set-upstream-to=") + tracking) << branch;
|
||||||
else
|
else
|
||||||
arguments << QLatin1String("--set-upstream") << branch << tracking;
|
arguments << QLatin1String("--set-upstream") << branch << tracking;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
return vcsFullySynchronousExec(workingDirectory, arguments, &outputText);
|
||||||
if (!rc) {
|
|
||||||
msgCannotRun(tr("Cannot set tracking branch: %1")
|
|
||||||
.arg(commandOutputFromLocal8Bit(errorText)), 0);
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::handleMergeConflicts(const QString &workingDir, const QString &commit,
|
void GitClient::handleMergeConflicts(const QString &workingDir, const QString &commit,
|
||||||
@@ -3125,7 +3081,7 @@ bool GitClient::synchronousStashRemove(const QString &workingDirectory,
|
|||||||
arguments << QLatin1String("drop") << stash;
|
arguments << QLatin1String("drop") << stash;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText, &errorText);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
const QString output = commandOutputFromLocal8Bit(outputText);
|
const QString output = commandOutputFromLocal8Bit(outputText);
|
||||||
if (!output.isEmpty())
|
if (!output.isEmpty())
|
||||||
@@ -3145,7 +3101,7 @@ bool GitClient::synchronousStashList(const QString &workingDirectory,
|
|||||||
arguments << QLatin1String("list") << QLatin1String(noColorOption);
|
arguments << QLatin1String("list") << QLatin1String(noColorOption);
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText);
|
const bool rc = vcsFullySynchronousExec(workingDirectory, arguments, &outputText, &errorText);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
||||||
return false;
|
return false;
|
||||||
@@ -3169,9 +3125,8 @@ QString GitClient::readConfigValue(const QString &workingDirectory, const QStrin
|
|||||||
arguments << QLatin1String("config") << configVar;
|
arguments << QLatin1String("config") << configVar;
|
||||||
|
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
if (!vcsFullySynchronousExec(workingDirectory, arguments, &outputText, 0,
|
||||||
if (!fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText,
|
VcsBasePlugin::SuppressCommandLogging))
|
||||||
VcsBasePlugin::SuppressCommandLogging))
|
|
||||||
return QString();
|
return QString();
|
||||||
if (HostOsInfo::isWindowsHost())
|
if (HostOsInfo::isWindowsHost())
|
||||||
outputText.replace("\r\n", "\n");
|
outputText.replace("\r\n", "\n");
|
||||||
@@ -3192,7 +3147,7 @@ bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
|
|||||||
|
|
||||||
QStringList arguments(QLatin1String("remote"));
|
QStringList arguments(QLatin1String("remote"));
|
||||||
arguments << QLatin1String("add") << QLatin1String("origin") << QLatin1String(url);
|
arguments << QLatin1String("add") << QLatin1String("origin") << QLatin1String(url);
|
||||||
if (!fullySynchronousGit(workingDirectory.path(), arguments, 0))
|
if (!vcsFullySynchronousExec(workingDirectory.path(), arguments, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
arguments.clear();
|
arguments.clear();
|
||||||
@@ -3206,14 +3161,14 @@ bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
|
|||||||
arguments << QLatin1String("config")
|
arguments << QLatin1String("config")
|
||||||
<< QLatin1String("branch.master.remote")
|
<< QLatin1String("branch.master.remote")
|
||||||
<< QLatin1String("origin");
|
<< QLatin1String("origin");
|
||||||
if (!fullySynchronousGit(workingDirectory.path(), arguments, 0))
|
if (!vcsFullySynchronousExec(workingDirectory.path(), arguments, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
arguments.clear();
|
arguments.clear();
|
||||||
arguments << QLatin1String("config")
|
arguments << QLatin1String("config")
|
||||||
<< QLatin1String("branch.master.merge")
|
<< QLatin1String("branch.master.merge")
|
||||||
<< QLatin1String("refs/heads/master");
|
<< QLatin1String("refs/heads/master");
|
||||||
if (!fullySynchronousGit(workingDirectory.path(), arguments, 0))
|
if (!vcsFullySynchronousExec(workingDirectory.path(), arguments, 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -3250,9 +3205,9 @@ unsigned GitClient::synchronousGitVersion(QString *errorMessage) const
|
|||||||
// run git --version
|
// run git --version
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QByteArray errorText;
|
QByteArray errorText;
|
||||||
const bool rc = fullySynchronousGit(QString(), QStringList(QLatin1String("--version")),
|
const bool rc = vcsFullySynchronousExec(QString(), QStringList(QLatin1String("--version")),
|
||||||
&outputText, &errorText,
|
&outputText, &errorText,
|
||||||
VcsBasePlugin::SuppressCommandLogging);
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
msgCannotRun(tr("Cannot determine Git version: %1")
|
msgCannotRun(tr("Cannot determine Git version: %1")
|
||||||
.arg(commandOutputFromLocal8Bit(errorText)),
|
.arg(commandOutputFromLocal8Bit(errorText)),
|
||||||
|
@@ -373,13 +373,6 @@ private:
|
|||||||
bool useOutputToWindow = false, unsigned additionalFlags = 0,
|
bool useOutputToWindow = false, unsigned additionalFlags = 0,
|
||||||
int editorLineNumber = -1);
|
int editorLineNumber = -1);
|
||||||
|
|
||||||
// Fully synchronous git execution (QProcess-based).
|
|
||||||
bool fullySynchronousGit(const QString &workingDirectory,
|
|
||||||
const QStringList &arguments,
|
|
||||||
QByteArray *outputText,
|
|
||||||
QByteArray *errorText = 0,
|
|
||||||
unsigned flags = 0) const;
|
|
||||||
|
|
||||||
// Synchronous git execution using Utils::SynchronousProcess, with
|
// Synchronous git execution using Utils::SynchronousProcess, with
|
||||||
// log windows updating (using VcsBasePlugin::runVcs with flags).
|
// log windows updating (using VcsBasePlugin::runVcs with flags).
|
||||||
inline Utils::SynchronousProcessResponse
|
inline Utils::SynchronousProcessResponse
|
||||||
|
@@ -386,11 +386,9 @@ bool VcsBaseClient::synchronousPush(const QString &workingDir,
|
|||||||
return resp.result == Utils::SynchronousProcessResponse::Finished;
|
return resp.result == Utils::SynchronousProcessResponse::Finished;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VcsBaseClient::vcsFullySynchronousExec(const QString &workingDir,
|
bool VcsBaseClientImpl::vcsFullySynchronousExec(const QString &workingDir, const QStringList &args,
|
||||||
const QStringList &args,
|
QByteArray *outputData, QByteArray *errorData,
|
||||||
QByteArray *outputData,
|
unsigned flags) const
|
||||||
QByteArray *errorData,
|
|
||||||
unsigned flags) const
|
|
||||||
{
|
{
|
||||||
QByteArray internalErrorData;
|
QByteArray internalErrorData;
|
||||||
QScopedPointer<VcsCommand> command(createCommand(workingDir));
|
QScopedPointer<VcsCommand> command(createCommand(workingDir));
|
||||||
|
@@ -110,6 +110,11 @@ protected:
|
|||||||
virtual void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
virtual void annotateRevisionRequested(const QString &workingDirectory, const QString &file,
|
||||||
const QString &change, int line);
|
const QString &change, int line);
|
||||||
|
|
||||||
|
// Fully synchronous VCS execution (QProcess-based)
|
||||||
|
bool vcsFullySynchronousExec(const QString &workingDir, const QStringList &args,
|
||||||
|
QByteArray *outputData, QByteArray *errorData = 0,
|
||||||
|
unsigned flags = 0) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
void commandFinishedGotoLine(QWidget*);
|
void commandFinishedGotoLine(QWidget*);
|
||||||
@@ -220,10 +225,7 @@ protected:
|
|||||||
virtual StatusItem parseStatusLine(const QString &line) const = 0;
|
virtual StatusItem parseStatusLine(const QString &line) const = 0;
|
||||||
|
|
||||||
QString vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const;
|
QString vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const;
|
||||||
// Fully synchronous VCS execution (QProcess-based)
|
|
||||||
bool vcsFullySynchronousExec(const QString &workingDir, const QStringList &args,
|
|
||||||
QByteArray *outputData, QByteArray *errorData = 0,
|
|
||||||
unsigned flags = 0) const;
|
|
||||||
// Synchronous VCS execution using Utils::SynchronousProcess, with
|
// Synchronous VCS execution using Utils::SynchronousProcess, with
|
||||||
// log windows updating (using VcsBasePlugin::runVcs with flags)
|
// log windows updating (using VcsBasePlugin::runVcs with flags)
|
||||||
Utils::SynchronousProcessResponse vcsSynchronousExec(const QString &workingDir,
|
Utils::SynchronousProcessResponse vcsSynchronousExec(const QString &workingDir,
|
||||||
|
Reference in New Issue
Block a user