forked from qt-creator/qt-creator
Git: Refactor revParseCmd
Change-Id: I5125694ba334e2f3774ed19c64d671d3cb726bf4 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -981,11 +981,9 @@ QString GitClient::findGitDirForRepository(const QString &repositoryDir) const
|
|||||||
QString &res = repoDirCache[repositoryDir];
|
QString &res = repoDirCache[repositoryDir];
|
||||||
if (!res.isEmpty())
|
if (!res.isEmpty())
|
||||||
return res;
|
return res;
|
||||||
QByteArray outputText;
|
|
||||||
QStringList arguments;
|
synchronousRevParseCmd(repositoryDir, QLatin1String("--git-dir"), &res);
|
||||||
arguments << QLatin1String("rev-parse") << QLatin1String("--git-dir");
|
|
||||||
fullySynchronousGit(repositoryDir, arguments, &outputText, 0, false);
|
|
||||||
res = QString::fromLocal8Bit(outputText.trimmed());
|
|
||||||
if (!QDir(res).isAbsolute())
|
if (!QDir(res).isAbsolute())
|
||||||
res.prepend(repositoryDir + QLatin1Char('/'));
|
res.prepend(repositoryDir + QLatin1Char('/'));
|
||||||
return res;
|
return res;
|
||||||
@@ -1953,25 +1951,28 @@ QString GitClient::synchronousTopic(const QString &workingDirectory)
|
|||||||
return data.topic = remoteBranch.isEmpty() ? tr("Detached HEAD") : remoteBranch;
|
return data.topic = remoteBranch.isEmpty() ? tr("Detached HEAD") : remoteBranch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GitClient::synchronousRevParseCmd(const QString &workingDirectory, const QString &ref,
|
||||||
|
QString *output, QString *errorMessage) const
|
||||||
|
{
|
||||||
|
QStringList arguments(QLatin1String("rev-parse"));
|
||||||
|
arguments << ref;
|
||||||
|
QByteArray outputText;
|
||||||
|
QByteArray errorText;
|
||||||
|
const bool rc = fullySynchronousGit(workingDirectory, arguments, &outputText, &errorText,
|
||||||
|
VcsBasePlugin::SuppressCommandLogging);
|
||||||
|
*output = commandOutputFromLocal8Bit(outputText.trimmed());
|
||||||
|
if (!rc)
|
||||||
|
msgCannotRun(arguments, workingDirectory, errorText, errorMessage);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
// Retrieve head revision
|
// Retrieve head revision
|
||||||
QString GitClient::synchronousTopRevision(const QString &workingDirectory, QString *errorMessageIn)
|
QString GitClient::synchronousTopRevision(const QString &workingDirectory, QString *errorMessageIn)
|
||||||
{
|
{
|
||||||
QByteArray outputTextData;
|
QString revision;
|
||||||
QByteArray errorText;
|
if (!synchronousRevParseCmd(workingDirectory, QLatin1String(HEAD), &revision, errorMessageIn))
|
||||||
QStringList arguments;
|
|
||||||
QString errorMessage;
|
|
||||||
// get revision
|
|
||||||
arguments << QLatin1String("rev-parse") << QLatin1String(HEAD);
|
|
||||||
if (!fullySynchronousGit(workingDirectory, arguments, &outputTextData, &errorText,
|
|
||||||
VcsBasePlugin::SuppressCommandLogging)) {
|
|
||||||
errorMessage = tr("Cannot retrieve top revision of \"%1\": %2")
|
|
||||||
.arg(QDir::toNativeSeparators(workingDirectory), commandOutputFromLocal8Bit(errorText));
|
|
||||||
return QString();
|
return QString();
|
||||||
}
|
|
||||||
QString revision = commandOutputFromLocal8Bit(outputTextData);
|
|
||||||
revision.remove(QLatin1Char('\n'));
|
|
||||||
if (revision.isEmpty() && !errorMessage.isEmpty())
|
|
||||||
msgCannotRun(errorMessage, errorMessageIn);
|
|
||||||
|
|
||||||
return revision;
|
return revision;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -236,6 +236,8 @@ public:
|
|||||||
bool synchronousHeadRefs(const QString &workingDirectory, QStringList *output,
|
bool synchronousHeadRefs(const QString &workingDirectory, QStringList *output,
|
||||||
QString *errorMessage = 0);
|
QString *errorMessage = 0);
|
||||||
QString synchronousTopic(const QString &workingDirectory);
|
QString synchronousTopic(const QString &workingDirectory);
|
||||||
|
bool synchronousRevParseCmd(const QString &workingDirectory, const QString &ref,
|
||||||
|
QString *output, QString *errorMessage = 0) const;
|
||||||
QString synchronousTopRevision(const QString &workingDirectory, QString *errorMessage = 0);
|
QString synchronousTopRevision(const QString &workingDirectory, QString *errorMessage = 0);
|
||||||
void synchronousTagsForCommit(const QString &workingDirectory, const QString &revision,
|
void synchronousTagsForCommit(const QString &workingDirectory, const QString &revision,
|
||||||
QString &precedes, QString &follows);
|
QString &precedes, QString &follows);
|
||||||
|
|||||||
Reference in New Issue
Block a user