diff options
author | Orgad Shaneh <[email protected]> | 2012-08-01 10:29:01 +0300 |
---|---|---|
committer | Tobias Hunger <[email protected]> | 2012-08-03 18:02:37 +0200 |
commit | 69eeb94b7e179d30ab51404059f151c728ae0ee6 (patch) | |
tree | a49ab6f0f3862179cfa93acc3b8c1a92cdf9ecc6 | |
parent | 8b0844d0325eac26fe760aa43e81c6bc0ab2eec1 (diff) |
Git: Support gitfile on commit
Change-Id: Ia2b8c7705129937a60585d881e1fbfa7815d858f
Reviewed-by: Tobias Hunger <[email protected]>
-rw-r--r-- | src/plugins/git/gitclient.cpp | 17 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 1 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index a7d101681e7..1ae8a662ff4 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -390,6 +390,15 @@ QString GitClient::findRepositoryForDirectory(const QString &dir) } } +QString GitClient::findGitDirForRepository(const QString &repositoryDir) +{ + QByteArray outputText; + QStringList arguments; + arguments << QLatin1String("rev-parse") << QLatin1String("--git-dir"); + fullySynchronousGit(repositoryDir, arguments, &outputText, 0, false); + return QString::fromLocal8Bit(outputText.trimmed()); +} + VcsBase::VcsBaseEditorWidget *GitClient::findExistingVCSEditor(const char *registerDynamicProperty, const QString &dynamicPropertyValue) const { @@ -1712,14 +1721,14 @@ bool GitClient::getCommitData(const QString &workingDirectory, commitData->panelInfo.repository = repoDirectory; - QDir gitDir(repoDirectory); - if (!gitDir.cd(QLatin1String(GIT_DIRECTORY))) { + QString gitDir = GitClient::findGitDirForRepository(repoDirectory); + if (gitDir.isEmpty()) { *errorMessage = tr("The repository \"%1\" is not initialized.").arg(repoDirectory); return false; } // Read description - const QString descriptionFile = gitDir.absoluteFilePath(QLatin1String("description")); + const QString descriptionFile = QDir(gitDir).absoluteFilePath(QLatin1String("description")); if (QFileInfo(descriptionFile).isFile()) { Utils::FileReader reader; if (!reader.fetch(descriptionFile, QIODevice::Text, errorMessage)) @@ -1798,7 +1807,7 @@ bool GitClient::getCommitData(const QString &workingDirectory, commitData->panelData.author = readConfigValue(workingDirectory, QLatin1String("user.name")); commitData->panelData.email = readConfigValue(workingDirectory, QLatin1String("user.email")); // Commit: Get the commit template - QString templateFilename = gitDir.absoluteFilePath(QLatin1String("MERGE_MSG")); + QString templateFilename = QDir(gitDir).absoluteFilePath(QLatin1String("MERGE_MSG")); if (!QFileInfo(templateFilename).isFile()) templateFilename = readConfigValue(workingDirectory, QLatin1String("commit.template")); if (!templateFilename.isEmpty()) { diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 616f41cb3ab..687ca1e5c47 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -85,6 +85,7 @@ public: unsigned gitVersion(QString *errorMessage = 0) const; QString findRepositoryForDirectory(const QString &dir); + QString findGitDirForRepository(const QString &repositoryDir); void diff(const QString &workingDirectory, const QStringList &diffArgs, const QString &fileName); void diff(const QString &workingDirectory, const QStringList &diffArgs, |