summaryrefslogtreecommitdiff
path: root/src/plugins/mercurial
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-10-02 00:18:39 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-10-11 12:43:25 +0200
commitfdb6ef90fc7a695e2b8d37abdfcf48fe0d8afb03 (patch)
treedbf64e035c2a58235ad16b0e0d575f300e56db36 /src/plugins/mercurial
parent6f24665e7e133d9d64ea07ae37e35b9e1a1e83a7 (diff)
downloadqt-creator-fdb6ef90fc7a695e2b8d37abdfcf48fe0d8afb03.tar.gz
VCS: Do not try to add files that are already tracked
Task-number: QTCREATORBUG-2455 Change-Id: I4b1fa9676ad4a8d7293e035e4d6103251bef8aee Reviewed-by: Nikita Baryshnikov <nib952051@gmail.com> Reviewed-by: Cristian Tibirna <tibirna@kde.org> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/mercurial')
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp9
-rw-r--r--src/plugins/mercurial/mercurialclient.h1
-rw-r--r--src/plugins/mercurial/mercurialcontrol.cpp5
-rw-r--r--src/plugins/mercurial/mercurialcontrol.h1
4 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index e4966d2627..f1969682f5 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -257,6 +257,15 @@ QString MercurialClient::vcsGetRepositoryURL(const QString &directory)
return QString();
}
+bool MercurialClient::managesFile(const QString &workingDirectory, const QString &fileName) const
+{
+ QStringList args;
+ args << QLatin1String("status") << QLatin1String("--unknown") << fileName;
+ QByteArray output;
+ vcsFullySynchronousExec(workingDirectory, args, &output);
+ return output.isEmpty();
+}
+
void MercurialClient::incoming(const QString &repositoryRoot, const QString &repository)
{
QStringList args;
diff --git a/src/plugins/mercurial/mercurialclient.h b/src/plugins/mercurial/mercurialclient.h
index 7f12b8470f..845d2db478 100644
--- a/src/plugins/mercurial/mercurialclient.h
+++ b/src/plugins/mercurial/mercurialclient.h
@@ -63,6 +63,7 @@ public:
void incoming(const QString &repositoryRoot, const QString &repository = QString());
void outgoing(const QString &repositoryRoot);
QString vcsGetRepositoryURL(const QString &directory);
+ bool managesFile(const QString &workingDirectory, const QString &fileName) const;
void annotate(const QString &workingDir, const QString &file,
const QString revision = QString(), int lineNumber = -1,
diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp
index 8eaa73dce1..c8fa812e2d 100644
--- a/src/plugins/mercurial/mercurialcontrol.cpp
+++ b/src/plugins/mercurial/mercurialcontrol.cpp
@@ -64,6 +64,11 @@ bool MercurialControl::managesDirectory(const QString &directory, QString *topLe
return !topLevelFound.isEmpty();
}
+bool MercurialControl::managesFile(const QString &workingDirectory, const QString &fileName) const
+{
+ return mercurialClient->managesFile(workingDirectory, fileName);
+}
+
bool MercurialControl::isConfigured() const
{
const QString binary = mercurialClient->settings()->binaryPath();
diff --git a/src/plugins/mercurial/mercurialcontrol.h b/src/plugins/mercurial/mercurialcontrol.h
index 3fac104c04..4a5c2e872c 100644
--- a/src/plugins/mercurial/mercurialcontrol.h
+++ b/src/plugins/mercurial/mercurialcontrol.h
@@ -53,6 +53,7 @@ public:
QString displayName() const;
Core::Id id() const;
bool managesDirectory(const QString &filename, QString *topLevel = 0) const;
+ bool managesFile(const QString &workingDirectory, const QString &fileName) const;
bool isConfigured() const;
bool supportsOperation(Operation operation) const;
bool vcsOpen(const QString &fileName);