diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-10-02 00:18:39 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2013-10-11 12:43:25 +0200 |
commit | fdb6ef90fc7a695e2b8d37abdfcf48fe0d8afb03 (patch) | |
tree | dbf64e035c2a58235ad16b0e0d575f300e56db36 /src/plugins/subversion | |
parent | 6f24665e7e133d9d64ea07ae37e35b9e1a1e83a7 (diff) | |
download | qt-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.cpp | 5 | ||||
-rw-r--r-- | src/plugins/subversion/subversioncontrol.h | 1 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 13 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.h | 5 |
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(), |