aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOrgad Shaneh <[email protected]>2012-08-01 10:29:01 +0300
committerTobias Hunger <[email protected]>2012-08-03 18:02:37 +0200
commit69eeb94b7e179d30ab51404059f151c728ae0ee6 (patch)
treea49ab6f0f3862179cfa93acc3b8c1a92cdf9ecc6
parent8b0844d0325eac26fe760aa43e81c6bc0ab2eec1 (diff)
Git: Support gitfile on commit
Change-Id: Ia2b8c7705129937a60585d881e1fbfa7815d858f Reviewed-by: Tobias Hunger <[email protected]>
-rw-r--r--src/plugins/git/gitclient.cpp17
-rw-r--r--src/plugins/git/gitclient.h1
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,