forked from qt-creator/qt-creator
VCS: Add a way to filter out files/directories that belong to a VCS
Change-Id: I4dcbe6242cfe327e3b72d3dd550309be45e326a9 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -32,6 +32,8 @@
|
|||||||
#include <vcsbase/vcsoutputwindow.h>
|
#include <vcsbase/vcsoutputwindow.h>
|
||||||
#include <vcsbase/vcsbaseeditorparameterwidget.h>
|
#include <vcsbase/vcsbaseeditorparameterwidget.h>
|
||||||
|
|
||||||
|
#include <utils/hostosinfo.h>
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
@@ -171,6 +173,12 @@ VcsBaseEditorWidget *BazaarClient::annotate(
|
|||||||
QStringList(extraOptions) << QLatin1String("--long"));
|
QStringList(extraOptions) << QLatin1String("--long"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BazaarClient::isVcsDirectory(const FileName &fileName) const
|
||||||
|
{
|
||||||
|
return fileName.toFileInfo().isDir()
|
||||||
|
&& fileName.fileName().compare(Constants::BAZAARREPO, HostOsInfo::fileNameCaseSensitivity());
|
||||||
|
}
|
||||||
|
|
||||||
QString BazaarClient::findTopLevelForFile(const QFileInfo &file) const
|
QString BazaarClient::findTopLevelForFile(const QFileInfo &file) const
|
||||||
{
|
{
|
||||||
const QString repositoryCheckFile =
|
const QString repositoryCheckFile =
|
||||||
|
@@ -52,6 +52,7 @@ public:
|
|||||||
VcsBase::VcsBaseEditorWidget *annotate(
|
VcsBase::VcsBaseEditorWidget *annotate(
|
||||||
const QString &workingDir, const QString &file, const QString &revision = QString(),
|
const QString &workingDir, const QString &file, const QString &revision = QString(),
|
||||||
int lineNumber = -1, const QStringList &extraOptions = QStringList());
|
int lineNumber = -1, const QStringList &extraOptions = QStringList());
|
||||||
|
bool isVcsDirectory(const Utils::FileName &fileName) const;
|
||||||
QString findTopLevelForFile(const QFileInfo &file) const;
|
QString findTopLevelForFile(const QFileInfo &file) const;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const;
|
||||||
|
|
||||||
|
@@ -52,6 +52,11 @@ Core::Id BazaarControl::id() const
|
|||||||
return Core::Id(VcsBase::Constants::VCS_ID_BAZAAR);
|
return Core::Id(VcsBase::Constants::VCS_ID_BAZAAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BazaarControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
return m_bazaarClient->isVcsDirectory(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
bool BazaarControl::managesDirectory(const QString &directory, QString *topLevel) const
|
bool BazaarControl::managesDirectory(const QString &directory, QString *topLevel) const
|
||||||
{
|
{
|
||||||
QFileInfo dir(directory);
|
QFileInfo dir(directory);
|
||||||
|
@@ -48,6 +48,8 @@ public:
|
|||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
|
|
||||||
bool managesDirectory(const QString &filename, QString *topLevel = 0) const final;
|
bool managesDirectory(const QString &filename, QString *topLevel = 0) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
bool isConfigured() const final;
|
bool isConfigured() const final;
|
||||||
|
@@ -49,6 +49,12 @@ Core::Id ClearCaseControl::id() const
|
|||||||
return Constants::VCS_ID_CLEARCASE;
|
return Constants::VCS_ID_CLEARCASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ClearCaseControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(fileName);
|
||||||
|
return false; // ClearCase has no files/directories littering the sources
|
||||||
|
}
|
||||||
|
|
||||||
bool ClearCaseControl::isConfigured() const
|
bool ClearCaseControl::isConfigured() const
|
||||||
{
|
{
|
||||||
#ifdef WITH_TESTS
|
#ifdef WITH_TESTS
|
||||||
|
@@ -42,6 +42,8 @@ public:
|
|||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
|
|
||||||
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
|
|
||||||
|
@@ -92,6 +92,17 @@ public:
|
|||||||
virtual QString displayName() const = 0;
|
virtual QString displayName() const = 0;
|
||||||
virtual Id id() const = 0;
|
virtual Id id() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief isVcsFileOrDirectory
|
||||||
|
* \param fileName
|
||||||
|
* \return True if filename is a file or directory that is maintained by the
|
||||||
|
* version control system.
|
||||||
|
*
|
||||||
|
* It will return true only for exact matches of the name, not for e.g. files in a
|
||||||
|
* directory owned by the version control system (e.g. .git/control).
|
||||||
|
*/
|
||||||
|
virtual bool isVcsFileOrDirectory(const Utils::FileName &fileName) const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns whether files in this directory should be managed with this
|
* Returns whether files in this directory should be managed with this
|
||||||
* version control.
|
* version control.
|
||||||
@@ -232,6 +243,9 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
~TestVersionControl();
|
~TestVersionControl();
|
||||||
|
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final
|
||||||
|
{ Q_UNUSED(fileName); return false; }
|
||||||
|
|
||||||
void setManagedDirectories(const QHash<QString, QString> &dirs);
|
void setManagedDirectories(const QHash<QString, QString> &dirs);
|
||||||
void setManagedFiles(const QSet<QString> &files);
|
void setManagedFiles(const QSet<QString> &files);
|
||||||
|
|
||||||
|
@@ -33,6 +33,7 @@
|
|||||||
#include <vcsbase/vcscommand.h>
|
#include <vcsbase/vcscommand.h>
|
||||||
|
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
@@ -54,6 +55,12 @@ Core::Id CvsControl::id() const
|
|||||||
return Core::Id(VcsBase::Constants::VCS_ID_CVS);
|
return Core::Id(VcsBase::Constants::VCS_ID_CVS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CvsControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
return fileName.toFileInfo().isDir()
|
||||||
|
&& fileName.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity());
|
||||||
|
}
|
||||||
|
|
||||||
bool CvsControl::isConfigured() const
|
bool CvsControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const Utils::FileName binary = m_plugin->client()->vcsBinary();
|
const Utils::FileName binary = m_plugin->client()->vcsBinary();
|
||||||
|
@@ -42,6 +42,8 @@ public:
|
|||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
|
|
||||||
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
|
|
||||||
|
@@ -30,6 +30,8 @@
|
|||||||
#include <vcsbase/vcsbaseconstants.h>
|
#include <vcsbase/vcsbaseconstants.h>
|
||||||
#include <vcsbase/vcscommand.h>
|
#include <vcsbase/vcscommand.h>
|
||||||
|
|
||||||
|
#include <utils/hostosinfo.h>
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QProcessEnvironment>
|
#include <QProcessEnvironment>
|
||||||
|
|
||||||
@@ -74,6 +76,12 @@ Core::Id GitVersionControl::id() const
|
|||||||
return Core::Id(VcsBase::Constants::VCS_ID_GIT);
|
return Core::Id(VcsBase::Constants::VCS_ID_GIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GitVersionControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
return fileName.toFileInfo().isDir()
|
||||||
|
&& fileName.fileName().compare(".git", Utils::HostOsInfo::fileNameCaseSensitivity());
|
||||||
|
}
|
||||||
|
|
||||||
bool GitVersionControl::isConfigured() const
|
bool GitVersionControl::isConfigured() const
|
||||||
{
|
{
|
||||||
return !m_client->vcsBinary().isEmpty();
|
return !m_client->vcsBinary().isEmpty();
|
||||||
|
@@ -42,6 +42,8 @@ public:
|
|||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
|
|
||||||
bool managesDirectory(const QString &directory, QString *topLevel) const final;
|
bool managesDirectory(const QString &directory, QString *topLevel) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
|
|
||||||
|
@@ -33,6 +33,7 @@
|
|||||||
#include <vcsbase/vcsbaseeditorparameterwidget.h>
|
#include <vcsbase/vcsbaseeditorparameterwidget.h>
|
||||||
#include <utils/synchronousprocess.h>
|
#include <utils/synchronousprocess.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
@@ -333,6 +334,12 @@ void MercurialClient::revertAll(const QString &workingDir, const QString &revisi
|
|||||||
QStringList(extraOptions) << QLatin1String("--all"));
|
QStringList(extraOptions) << QLatin1String("--all"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MercurialClient::isVcsDirectory(const FileName &fileName) const
|
||||||
|
{
|
||||||
|
return fileName.toFileInfo().isDir()
|
||||||
|
&& fileName.fileName().compare(Constants::MERCURIALREPO, HostOsInfo::fileNameCaseSensitivity());
|
||||||
|
}
|
||||||
|
|
||||||
void MercurialClient::view(const QString &source, const QString &id,
|
void MercurialClient::view(const QString &source, const QString &id,
|
||||||
const QStringList &extraOptions)
|
const QStringList &extraOptions)
|
||||||
{
|
{
|
||||||
|
@@ -70,6 +70,7 @@ public:
|
|||||||
void revertAll(const QString &workingDir, const QString &revision = QString(),
|
void revertAll(const QString &workingDir, const QString &revision = QString(),
|
||||||
const QStringList &extraOptions = QStringList()) override;
|
const QStringList &extraOptions = QStringList()) override;
|
||||||
|
|
||||||
|
bool isVcsDirectory(const Utils::FileName &fileName) const;
|
||||||
QString findTopLevelForFile(const QFileInfo &file) const override;
|
QString findTopLevelForFile(const QFileInfo &file) const override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@@ -78,6 +78,11 @@ Core::Id MercurialControl::id() const
|
|||||||
return Core::Id(VcsBase::Constants::VCS_ID_MERCURIAL);
|
return Core::Id(VcsBase::Constants::VCS_ID_MERCURIAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MercurialControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
return mercurialClient->isVcsDirectory(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
bool MercurialControl::managesDirectory(const QString &directory, QString *topLevel) const
|
bool MercurialControl::managesDirectory(const QString &directory, QString *topLevel) const
|
||||||
{
|
{
|
||||||
QFileInfo dir(directory);
|
QFileInfo dir(directory);
|
||||||
|
@@ -47,6 +47,8 @@ public:
|
|||||||
|
|
||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
|
|
||||||
bool managesDirectory(const QString &filename, QString *topLevel = 0) const final;
|
bool managesDirectory(const QString &filename, QString *topLevel = 0) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
bool isConfigured() const final;
|
bool isConfigured() const final;
|
||||||
|
@@ -49,6 +49,12 @@ Core::Id PerforceVersionControl::id() const
|
|||||||
return Core::Id(VcsBase::Constants::VCS_ID_PERFORCE);
|
return Core::Id(VcsBase::Constants::VCS_ID_PERFORCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PerforceVersionControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(fileName);
|
||||||
|
return false; // Perforce does not seem to litter its files into the source tree.
|
||||||
|
}
|
||||||
|
|
||||||
bool PerforceVersionControl::isConfigured() const
|
bool PerforceVersionControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const QString binary = m_plugin->settings().p4BinaryPath();
|
const QString binary = m_plugin->settings().p4BinaryPath();
|
||||||
|
@@ -41,6 +41,7 @@ public:
|
|||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
|
|
||||||
|
@@ -77,6 +77,11 @@ Core::Id SubversionControl::id() const
|
|||||||
return Core::Id(VcsBase::Constants::VCS_ID_SUBVERSION);
|
return Core::Id(VcsBase::Constants::VCS_ID_SUBVERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SubversionControl::isVcsFileOrDirectory(const Utils::FileName &fileName) const
|
||||||
|
{
|
||||||
|
return m_plugin->isVcsDirectory(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
bool SubversionControl::isConfigured() const
|
bool SubversionControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const Utils::FileName binary = m_plugin->client()->vcsBinary();
|
const Utils::FileName binary = m_plugin->client()->vcsBinary();
|
||||||
|
@@ -40,6 +40,7 @@ public:
|
|||||||
explicit SubversionControl(SubversionPlugin *plugin);
|
explicit SubversionControl(SubversionPlugin *plugin);
|
||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
Core::Id id() const final;
|
Core::Id id() const final;
|
||||||
|
bool isVcsFileOrDirectory(const Utils::FileName &fileName) const final;
|
||||||
|
|
||||||
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
bool managesDirectory(const QString &directory, QString *topLevel = 0) const final;
|
||||||
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
bool managesFile(const QString &workingDirectory, const QString &fileName) const final;
|
||||||
|
@@ -54,6 +54,7 @@
|
|||||||
#include <coreplugin/locator/commandlocator.h>
|
#include <coreplugin/locator/commandlocator.h>
|
||||||
#include <coreplugin/messagemanager.h>
|
#include <coreplugin/messagemanager.h>
|
||||||
|
|
||||||
|
#include <utils/algorithm.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/mimetypes/mimedatabase.h>
|
#include <utils/mimetypes/mimedatabase.h>
|
||||||
@@ -408,6 +409,15 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SubversionPlugin::isVcsDirectory(const FileName &fileName)
|
||||||
|
{
|
||||||
|
const QString baseName = fileName.fileName();
|
||||||
|
return fileName.toFileInfo().isDir()
|
||||||
|
&& contains(m_svnDirectories, [baseName](const QString &s) {
|
||||||
|
return baseName.compare(s, HostOsInfo::fileNameCaseSensitivity());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
SubversionClient *SubversionPlugin::client() const
|
SubversionClient *SubversionPlugin::client() const
|
||||||
{
|
{
|
||||||
QTC_CHECK(m_client);
|
QTC_CHECK(m_client);
|
||||||
|
@@ -73,6 +73,8 @@ public:
|
|||||||
|
|
||||||
bool initialize(const QStringList &arguments, QString *errorMessage);
|
bool initialize(const QStringList &arguments, QString *errorMessage);
|
||||||
|
|
||||||
|
bool isVcsDirectory(const Utils::FileName &fileName);
|
||||||
|
|
||||||
SubversionClient *client() const;
|
SubversionClient *client() const;
|
||||||
|
|
||||||
SubversionSubmitEditor *openSubversionSubmitEditor(const QString &fileName);
|
SubversionSubmitEditor *openSubversionSubmitEditor(const QString &fileName);
|
||||||
|
Reference in New Issue
Block a user