diff --git a/src/plugins/bazaar/bazaarclient.cpp b/src/plugins/bazaar/bazaarclient.cpp index 431ff8c6a50ad93d5e1829f695ba6b60eada0f83..5df1804457b12923e3b83e3169ea8fe02e1e3cb0 100644 --- a/src/plugins/bazaar/bazaarclient.cpp +++ b/src/plugins/bazaar/bazaarclient.cpp @@ -128,6 +128,16 @@ QString BazaarClient::findTopLevelForFile(const QFileInfo &file) const repositoryCheckFile); } +bool BazaarClient::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + QStringList args(QLatin1String("status")); + args << fileName; + QByteArray stdOut; + if (!vcsFullySynchronousExec(workingDirectory, args, &stdOut)) + return false; + return !stdOut.startsWith("unknown"); +} + void BazaarClient::view(const QString &source, const QString &id, const QStringList &extraOptions) { QStringList args(QLatin1String("log")); diff --git a/src/plugins/bazaar/bazaarclient.h b/src/plugins/bazaar/bazaarclient.h index d0b1f4a216f04ec5870e36c2bfceef434829b875..3dc756ef586546553467da92b5ec1f055e9ed6aa 100644 --- a/src/plugins/bazaar/bazaarclient.h +++ b/src/plugins/bazaar/bazaarclient.h @@ -57,6 +57,7 @@ public: void view(const QString &source, const QString &id, const QStringList &extraOptions = QStringList()); QString findTopLevelForFile(const QFileInfo &file) const; + bool managesFile(const QString &workingDirectory, const QString &fileName) const; protected: Core::Id vcsEditorKind(VcsCommand cmd) const; diff --git a/src/plugins/bazaar/bazaarcontrol.cpp b/src/plugins/bazaar/bazaarcontrol.cpp index bf480761a0a04524fef219155930fdbabd45bde2..5d27b46f63faaf34e9ede300633c877d11af5d35 100644 --- a/src/plugins/bazaar/bazaarcontrol.cpp +++ b/src/plugins/bazaar/bazaarcontrol.cpp @@ -61,6 +61,11 @@ bool BazaarControl::managesDirectory(const QString &directory, QString *topLevel return !topLevelFound.isEmpty(); } +bool BazaarControl::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + return m_bazaarClient->managesFile(workingDirectory, fileName); +} + bool BazaarControl::isConfigured() const { const QString binary = m_bazaarClient->settings()->binaryPath(); diff --git a/src/plugins/bazaar/bazaarcontrol.h b/src/plugins/bazaar/bazaarcontrol.h index 673b70a5240c339fde1d4ce75b30483e2c67ac3b..94e57aebddac3d6e483433122818593fb9d98678 100644 --- a/src/plugins/bazaar/bazaarcontrol.h +++ b/src/plugins/bazaar/bazaarcontrol.h @@ -53,6 +53,7 @@ public: 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); diff --git a/src/plugins/clearcase/clearcasecontrol.cpp b/src/plugins/clearcase/clearcasecontrol.cpp index 79f81242a179d292ab121a20d0bbd150438ee26b..c2f7dd44e0215851f1e6b430b115cf5dc9319ffb 100644 --- a/src/plugins/clearcase/clearcasecontrol.cpp +++ b/src/plugins/clearcase/clearcasecontrol.cpp @@ -134,6 +134,11 @@ bool ClearCaseControl::managesDirectory(const QString &directory, QString *topLe return m_plugin->managesDirectory(directory, topLevel); } +bool ClearCaseControl::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + return m_plugin->managesFile(workingDirectory, fileName); +} + bool ClearCaseControl::vcsAnnotate(const QString &file, int line) { const QFileInfo fi(file); diff --git a/src/plugins/clearcase/clearcasecontrol.h b/src/plugins/clearcase/clearcasecontrol.h index f4a0fb5743c1327cc02fb23a165013af559a9db3..fa980595e26753e14efda128f7aa520c524fc879 100644 --- a/src/plugins/clearcase/clearcasecontrol.h +++ b/src/plugins/clearcase/clearcasecontrol.h @@ -48,6 +48,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; diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 3e2c34a505f8c9e63cd3369689a0e8d3617d2cce..4775f2e87646e6fae9637e5fe2c50b3c11d155f5 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -1850,6 +1850,13 @@ bool ClearCasePlugin::ccCheckUcm(const QString &viewname, const QString &working return QRegExp(QLatin1String("(^|\\n)ucm\\n")).indexIn(catcsData) != -1; } +bool ClearCasePlugin::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + QStringList args; + args << QLatin1String("ls") << fileName; + return runCleartoolSync(workingDirectory, args).contains(QLatin1String("@@")); +} + ViewData ClearCasePlugin::ccGetView(const QString &workingDir) const { static QHash<QString, ViewData> viewCache; diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h index 6d62e2e5e88fe6a9b720841351ebb427ddb75998..929844197af9e910980357b736ee9920904dc8af 100644 --- a/src/plugins/clearcase/clearcaseplugin.h +++ b/src/plugins/clearcase/clearcaseplugin.h @@ -166,6 +166,7 @@ public: void setStatus(const QString &file, FileStatus::Status status, bool update = true); bool ccCheckUcm(const QString &viewname, const QString &workingDir) const; + bool managesFile(const QString &workingDirectory, const QString &fileName) const; public slots: void vcsAnnotate(const QString &workingDir, const QString &file, diff --git a/src/plugins/coreplugin/iversioncontrol.h b/src/plugins/coreplugin/iversioncontrol.h index 4ba0277a712931e95bf5b85ba1ad96fdbd96a575..329f687f2151c20c5b477dcbd7901ca1c598c1ad 100644 --- a/src/plugins/coreplugin/iversioncontrol.h +++ b/src/plugins/coreplugin/iversioncontrol.h @@ -80,6 +80,14 @@ public: virtual bool managesDirectory(const QString &filename, QString *topLevel = 0) const = 0; + /*! + * Returns whether \a fileName is managed by this version control. + * + * \a workingDirectory is assumed to be part of a valid repository (not necessarily its + * top level). \a fileName is expected to be relative to workingDirectory. + */ + virtual bool managesFile(const QString &workingDirectory, const QString &fileName) const = 0; + /*! * Returns true is the VCS is configured to run. */ diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index c2419d8beb91ef373eeb4aa38f6a89c4802e81e6..1345aca4eaa568533ace383d6f9b9a8f1a251653 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -412,11 +412,20 @@ void VcsManager::promptToAdd(const QString &directory, const QStringList &fileNa if (!vc || !vc->supportsOperation(Core::IVersionControl::AddOperation)) return; + QStringList unmanagedFiles; + QDir dir(directory); + foreach (const QString &fileName, fileNames) { + if (!vc->managesFile(directory, dir.relativeFilePath(fileName))) + unmanagedFiles << fileName; + } + if (unmanagedFiles.isEmpty()) + return; + Internal::AddToVcsDialog dlg(Core::ICore::mainWindow(), VcsManager::msgAddToVcsTitle(), - fileNames, vc->displayName()); + unmanagedFiles, vc->displayName()); if (dlg.exec() == QDialog::Accepted) { QStringList notAddedToVc; - foreach (const QString &file, fileNames) { + foreach (const QString &file, unmanagedFiles) { if (!vc->vcsAdd(file)) notAddedToVc << file; } diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp index 87fdc2cf242bdb794b51b0795de8b988612d6edb..af579f3e99cd2a63ffd205ca51191446a375b81c 100644 --- a/src/plugins/cvs/cvscontrol.cpp +++ b/src/plugins/cvs/cvscontrol.cpp @@ -163,6 +163,11 @@ bool CvsControl::managesDirectory(const QString &directory, QString *topLevel) c return m_plugin->managesDirectory(directory, topLevel); } +bool CvsControl::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + return m_plugin->managesFile(workingDirectory, fileName); +} + void CvsControl::emitRepositoryChanged(const QString &s) { emit repositoryChanged(s); diff --git a/src/plugins/cvs/cvscontrol.h b/src/plugins/cvs/cvscontrol.h index 586296fa4df9563fffb5d727b99357a8e550becd..4a765557a30354a27df0b110b31cc250d3741911 100644 --- a/src/plugins/cvs/cvscontrol.h +++ b/src/plugins/cvs/cvscontrol.h @@ -48,6 +48,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/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index adbde2d7df284a2417a065cd7f3766d8b1d45086..9d4a8055f749feabb3d6baf2c07e4e27913e6b5b 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -1226,7 +1226,7 @@ CvsResponse CvsPlugin::runCvs(const QString &workingDirectory, const QStringList &arguments, int timeOut, unsigned flags, - QTextCodec *outputCodec) + QTextCodec *outputCodec) const { const QString executable = m_settings.cvsBinaryPath; CvsResponse response; @@ -1365,6 +1365,17 @@ bool CvsPlugin::managesDirectory(const QString &directory, QString *topLevel /* return manages; } +bool CvsPlugin::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + QStringList args; + args << QLatin1String("status") << fileName; + const CvsResponse response = + runCvs(workingDirectory, args, m_settings.timeOutMS(), SshPasswordPrompt); + if (response.result != CvsResponse::Ok) + return false; + return !response.stdOut.contains(QLatin1String("Status: Unknown")); +} + bool CvsPlugin::checkCVSDirectory(const QDir &directory) const { const QString cvsDir = directory.absoluteFilePath(QLatin1String("CVS")); diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h index ba5aad89b8ff6d1fb79ecf9b6a0ec26d0feb94d7..6d8f057b83b283a63a9cb4476269e94c4cbde982 100644 --- a/src/plugins/cvs/cvsplugin.h +++ b/src/plugins/cvs/cvsplugin.h @@ -90,6 +90,7 @@ public: bool vcsAdd(const QString &workingDir, const QString &fileName); bool vcsDelete(const QString &workingDir, const QString &fileName); bool managesDirectory(const QString &directory, QString *topLevel = 0) const; + bool managesFile(const QString &workingDirectory, const QString &fileName) const; // cvs 'edit' is used to implement 'open' (cvsnt). bool edit(const QString &topLevel, const QStringList &files); @@ -143,7 +144,8 @@ private: CvsResponse runCvs(const QString &workingDirectory, const QStringList &arguments, int timeOut, - unsigned flags, QTextCodec *outputCodec = 0); + unsigned flags, + QTextCodec *outputCodec = 0) const; void annotate(const QString &workingDir, const QString &file, const QString &revision = QString(), int lineNumber= -1); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 413f663e90da88759477b2b4286ad3c2b988f700..eab02e8c0549110c679a0ce7f1164b48417ea8d1 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -972,6 +972,15 @@ QString GitClient::findGitDirForRepository(const QString &repositoryDir) const return res; } +bool GitClient::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + QByteArray output; + QStringList arguments; + arguments << QLatin1String("ls-files") << QLatin1String("--error-unmatch") << fileName; + return fullySynchronousGit(workingDirectory, arguments, &output, 0, + VcsBasePlugin::SuppressCommandLogging); +} + VcsBase::VcsBaseEditorWidget *GitClient::findExistingVCSEditor(const char *registerDynamicProperty, const QString &dynamicPropertyValue) const { diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 7517f2629a58c2a5a5458ded42e2bec65ed70e7c..f21a14867281ce0ecee47f22c966d64e3a19e3aa 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -137,6 +137,7 @@ public: QString findRepositoryForDirectory(const QString &dir); QString findGitDirForRepository(const QString &repositoryDir) const; + bool managesFile(const QString &workingDirectory, const QString &fileName) const; void diff(const QString &workingDirectory, const QString &fileName); void diff(const QString &workingDirectory, diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp index b98e9ea350131d0b5a7433eb7d7e0941b30673ae..ae5154e81efcb2d433d436fec58deb1408d3073b 100644 --- a/src/plugins/git/gitversioncontrol.cpp +++ b/src/plugins/git/gitversioncontrol.cpp @@ -229,6 +229,11 @@ bool GitVersionControl::managesDirectory(const QString &directory, QString *topL return !topLevelFound.isEmpty(); } +bool GitVersionControl::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + return m_client->managesFile(workingDirectory, fileName); +} + bool GitVersionControl::vcsAnnotate(const QString &file, int line) { const QFileInfo fi(file); diff --git a/src/plugins/git/gitversioncontrol.h b/src/plugins/git/gitversioncontrol.h index 6baa152077166c5df0f452bc8dc84cb4a4bc7ba6..71c53be43cbbfde979798fd580f7b851fc2c2e57 100644 --- a/src/plugins/git/gitversioncontrol.h +++ b/src/plugins/git/gitversioncontrol.h @@ -48,6 +48,7 @@ public: Core::Id id() const; bool managesDirectory(const QString &directory, QString *topLevel) const; + bool managesFile(const QString &workingDirectory, const QString &fileName) const; bool isConfigured() const; bool supportsOperation(Operation operation) const; diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp index e4966d26271da4b763d74d9b2241550e2c6dd505..f1969682f51fc70659f8f2fed7b51db65bb89c57 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 7f12b8470f3198f814d88fe3a4a1c75e919f8a71..845d2db47864de957447bcbadba580ba5c1e8475 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 8eaa73dce19b93e53fbffe7e408fc340a1e26d0a..c8fa812e2dd0c8a5f9f9707045f3cc614ffbc485 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 3fac104c044220fc853b5e79177a104dfb500305..4a5c2e872c44e496f1094a8bdcf9225fd829bd2e 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); diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index ec8e13e5eea63e2659244272f71af68c60c21bfc..69dcc62fbcbe5082796fe857334cc2a47c4202de 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -828,6 +828,14 @@ bool PerforcePlugin::managesDirectory(const QString &directory, QString *topLeve return rc; } +bool PerforcePlugin::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + QStringList args; + args << QLatin1String("fstat") << QLatin1String("-m1") << fileName; + const PerforceResponse result = runP4Cmd(workingDirectory, args, RunFullySynchronous); + return result.stdOut.contains(QLatin1String("depotFile")); +} + bool PerforcePlugin::managesDirectoryFstat(const QString &directory) { if (!m_settings.isValid()) diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index 71e0a6e39d7ff2c87a2403a481fa87ef1bf89b30..b03fab15c9d2ad3f1d924320b0894a78fdd0e632 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -86,6 +86,7 @@ public: void extensionsInitialized(); bool managesDirectory(const QString &directory, QString *topLevel = 0); + bool managesFile(const QString &workingDirectory, const QString &fileName) const; bool vcsOpen(const QString &workingDir, const QString &fileName); bool vcsAdd(const QString &workingDir, const QString &fileName); bool vcsDelete(const QString &workingDir, const QString &filename); diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp index a6477335916f7b92c2d491b39a8fdd57c0326738..37c78efce9d3db6286971d36267e63aa47b961ad 100644 --- a/src/plugins/perforce/perforceversioncontrol.cpp +++ b/src/plugins/perforce/perforceversioncontrol.cpp @@ -184,6 +184,11 @@ bool PerforceVersionControl::managesDirectory(const QString &directory, QString return rc; } +bool PerforceVersionControl::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + return m_plugin->managesFile(workingDirectory, fileName); +} + void PerforceVersionControl::emitRepositoryChanged(const QString &s) { emit repositoryChanged(s); diff --git a/src/plugins/perforce/perforceversioncontrol.h b/src/plugins/perforce/perforceversioncontrol.h index 888ce898501425902d30e91e74cf94935beeb912..844791429edc8972d1c17f105734815cf5aeeff9 100644 --- a/src/plugins/perforce/perforceversioncontrol.h +++ b/src/plugins/perforce/perforceversioncontrol.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/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp index 3b11ef8acac422e6c6a5bcd05d1c8d84f9ea922f..200105bb3ba911723855468d6dcadcc6791568ef 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 d7b3a5ca44427146ef011a7781d0c5d9f7b23b56..ce7c54dfb2872b5fe06af9973e2520e5789c3da6 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 946e8e5026cb342855c376bfa0cd09949d6d4d32..de57be400e12dc51969b8d5651c9eae12b31e1c9 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 81a89b668eaa1d5a32b423a21eeb57346f5cf4b7..82940f1ae6dd2de875a0e6982bef292384ae42ce 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(), diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index ca8a7dd3ffd275fd5c526be2d07de6353d12f101..442313d87e6ad8c1757572ee12822dc464cea43e 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -276,7 +276,7 @@ bool VcsBaseClient::synchronousPush(const QString &workingDir, bool VcsBaseClient::vcsFullySynchronousExec(const QString &workingDir, const QStringList &args, - QByteArray *output) + QByteArray *output) const { QProcess vcsProcess; if (!workingDir.isEmpty()) diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index 2d3ff336a03252ab40e080c7abcc777983deef20..9734e4829cc3242baaa7de130a7b8251172b0e38 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -166,7 +166,7 @@ protected: // Fully synchronous VCS execution (QProcess-based) bool vcsFullySynchronousExec(const QString &workingDir, const QStringList &args, - QByteArray *output); + QByteArray *output) const; // Synchronous VCS execution using Utils::SynchronousProcess, with // log windows updating (using VcsBasePlugin::runVcs with flags) Utils::SynchronousProcessResponse vcsSynchronousExec(const QString &workingDir,