summaryrefslogtreecommitdiff
path: root/src/plugins/subversion
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/subversion
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/subversion')
-rw-r--r--src/plugins/subversion/subversioncontrol.cpp5
-rw-r--r--src/plugins/subversion/subversioncontrol.h1
-rw-r--r--src/plugins/subversion/subversionplugin.cpp13
-rw-r--r--src/plugins/subversion/subversionplugin.h5
4 files changed, 20 insertions, 4 deletions
diff --git a/src/plugins/subversion/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp
index 3b11ef8aca..200105bb3b 100644
--- a/src/plugins/subversion/subversioncontrol.cpp
+++ b/src/plugins/subversion/subversioncontrol.cpp
@@ -146,6 +146,11 @@ bool SubversionControl::managesDirectory(const QString &directory, QString *topL
return m_plugin->managesDirectory(directory, topLevel);
}
+bool SubversionControl::managesFile(const QString &workingDirectory, const QString &fileName) const
+{
+ return m_plugin->managesFile(workingDirectory, fileName);
+}
+
bool SubversionControl::vcsAnnotate(const QString &file, int line)
{
const QFileInfo fi(file);
diff --git a/src/plugins/subversion/subversioncontrol.h b/src/plugins/subversion/subversioncontrol.h
index d7b3a5ca44..ce7c54dfb2 100644
--- a/src/plugins/subversion/subversioncontrol.h
+++ b/src/plugins/subversion/subversioncontrol.h
@@ -47,6 +47,7 @@ public:
Core::Id id() const;
bool managesDirectory(const QString &directory, QString *topLevel = 0) const;
+ bool managesFile(const QString &workingDirectory, const QString &fileName) const;
bool isConfigured() const;
bool supportsOperation(Operation operation) const;
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 946e8e5026..de57be400e 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -1083,7 +1083,7 @@ SubversionResponse
const QStringList &arguments,
int timeOut,
unsigned flags,
- QTextCodec *outputCodec)
+ QTextCodec *outputCodec) const
{
const bool hasAuth = m_settings.hasAuthentication();
return runSvn(workingDir,
@@ -1142,7 +1142,7 @@ SubversionPlugin::Version SubversionPlugin::svnVersion()
SubversionResponse SubversionPlugin::runSvn(const QString &workingDir,
const QString &userName, const QString &password,
const QStringList &arguments, int timeOut,
- unsigned flags, QTextCodec *outputCodec)
+ unsigned flags, QTextCodec *outputCodec) const
{
const QString executable = m_settings.binaryPath();
SubversionResponse response;
@@ -1354,6 +1354,15 @@ bool SubversionPlugin::managesDirectory(const QString &directory, QString *topLe
return true;
}
+bool SubversionPlugin::managesFile(const QString &workingDirectory, const QString &fileName) const
+{
+ QStringList args;
+ args << QLatin1String("status") << fileName;
+ SubversionResponse response =
+ runSvn(workingDirectory, args, m_settings.timeOutMs(), 0);
+ return response.stdOut.isEmpty() || response.stdOut.at(0) != QLatin1Char('?');
+}
+
// Check whether SVN management subdirs exist.
bool SubversionPlugin::checkSVNSubDir(const QDir &directory, const QString &fileName) const
{
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index 81a89b668e..82940f1ae6 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -96,6 +96,7 @@ public:
bool vcsDelete(const QString &workingDir, const QString &fileName);
bool vcsMove(const QString &workingDir, const QString &from, const QString &to);
bool managesDirectory(const QString &directory, QString *topLevel = 0) const;
+ bool managesFile(const QString &workingDirectory, const QString &fileName) const;
bool vcsCheckout(const QString &directory, const QByteArray &url);
QString vcsGetRepositoryURL(const QString &directory);
@@ -161,12 +162,12 @@ private:
// Run using the settings' authentication options.
SubversionResponse runSvn(const QString &workingDir,
const QStringList &arguments, int timeOut,
- unsigned flags, QTextCodec *outputCodec = 0);
+ unsigned flags, QTextCodec *outputCodec = 0) const;
// Run using custom authentication options.
SubversionResponse runSvn(const QString &workingDir,
const QString &userName, const QString &password,
const QStringList &arguments, int timeOut,
- unsigned flags, QTextCodec *outputCodec = 0);
+ unsigned flags, QTextCodec *outputCodec = 0) const;
void filelog(const QString &workingDir,
const QString &file = QString(),