forked from qt-creator/qt-creator
Subversion: Follow the Fossil settings setup
Change-Id: I967396073abbcbc3058a016d5d37fa3fc5645f8a Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -34,27 +34,22 @@ using namespace VcsBase;
|
|||||||
namespace Subversion {
|
namespace Subversion {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
static SubversionSettings *s_settings = nullptr;
|
|
||||||
|
|
||||||
class SubversionLogConfig : public VcsBaseEditorConfig
|
class SubversionLogConfig : public VcsBaseEditorConfig
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SubversionLogConfig(SubversionSettings &settings, QToolBar *toolBar) :
|
explicit SubversionLogConfig(QToolBar *toolBar)
|
||||||
VcsBaseEditorConfig(toolBar)
|
: VcsBaseEditorConfig(toolBar)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton("--verbose", Tr::tr("Verbose"),
|
mapSetting(addToggleButton("--verbose", Tr::tr("Verbose"),
|
||||||
Tr::tr("Show files changed in each revision")),
|
Tr::tr("Show files changed in each revision")),
|
||||||
&settings.logVerbose);
|
&settings().logVerbose);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
SubversionClient::SubversionClient(SubversionSettings *settings) : VcsBaseClient(settings)
|
SubversionClient::SubversionClient() : VcsBaseClient(&Internal::settings())
|
||||||
{
|
{
|
||||||
s_settings = settings;
|
setLogConfigCreator([](QToolBar *toolBar) { return new SubversionLogConfig(toolBar); });
|
||||||
setLogConfigCreator([settings](QToolBar *toolBar) {
|
|
||||||
return new SubversionLogConfig(*settings, toolBar);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SubversionClient::doCommit(const FilePath &repositoryRoot,
|
bool SubversionClient::doCommit(const FilePath &repositoryRoot,
|
||||||
@@ -101,11 +96,11 @@ Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const
|
|||||||
// Add authorization options to the command line arguments.
|
// Add authorization options to the command line arguments.
|
||||||
CommandLine &operator<<(Utils::CommandLine &command, SubversionClient::AddAuthOptions)
|
CommandLine &operator<<(Utils::CommandLine &command, SubversionClient::AddAuthOptions)
|
||||||
{
|
{
|
||||||
if (!s_settings->hasAuthentication())
|
if (!settings().hasAuthentication())
|
||||||
return command;
|
return command;
|
||||||
|
|
||||||
const QString userName = s_settings->userName.value();
|
const QString userName = settings().userName();
|
||||||
const QString password = s_settings->password.value();
|
const QString password = settings().password();
|
||||||
|
|
||||||
if (userName.isEmpty())
|
if (userName.isEmpty())
|
||||||
return command;
|
return command;
|
||||||
@@ -239,7 +234,7 @@ void SubversionDiffEditorController::setChangeNumber(int changeNumber)
|
|||||||
SubversionDiffEditorController *SubversionClient::findOrCreateDiffEditor(const QString &documentId,
|
SubversionDiffEditorController *SubversionClient::findOrCreateDiffEditor(const QString &documentId,
|
||||||
const FilePath &source, const QString &title, const FilePath &workingDirectory)
|
const FilePath &source, const QString &title, const FilePath &workingDirectory)
|
||||||
{
|
{
|
||||||
auto &settings = static_cast<SubversionSettings &>(this->settings());
|
SubversionSettings &settings = Internal::settings();
|
||||||
IDocument *document = DiffEditorController::findOrCreateDocument(documentId, title);
|
IDocument *document = DiffEditorController::findOrCreateDocument(documentId, title);
|
||||||
auto controller = qobject_cast<SubversionDiffEditorController *>(
|
auto controller = qobject_cast<SubversionDiffEditorController *>(
|
||||||
DiffEditorController::controller(document));
|
DiffEditorController::controller(document));
|
||||||
|
@@ -18,7 +18,7 @@ class SubversionClient : public VcsBase::VcsBaseClient
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubversionClient(SubversionSettings *settings);
|
SubversionClient();
|
||||||
|
|
||||||
bool doCommit(const Utils::FilePath &repositoryRoot,
|
bool doCommit(const Utils::FilePath &repositoryRoot,
|
||||||
const QStringList &files,
|
const QStringList &files,
|
||||||
|
@@ -261,7 +261,6 @@ private:
|
|||||||
|
|
||||||
const QStringList m_svnDirectories;
|
const QStringList m_svnDirectories;
|
||||||
|
|
||||||
SubversionSettings m_settings;
|
|
||||||
SubversionClient *m_client = nullptr;
|
SubversionClient *m_client = nullptr;
|
||||||
QString m_commitMessageFileName;
|
QString m_commitMessageFileName;
|
||||||
FilePath m_commitRepository;
|
FilePath m_commitRepository;
|
||||||
@@ -289,7 +288,7 @@ private:
|
|||||||
|
|
||||||
QAction *m_menuAction = nullptr;
|
QAction *m_menuAction = nullptr;
|
||||||
|
|
||||||
SubversionSettingsPage m_settingsPage{&m_settings};
|
SubversionSettingsPage m_settingsPage;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VcsSubmitEditorFactory submitEditorFactory {
|
VcsSubmitEditorFactory submitEditorFactory {
|
||||||
@@ -358,7 +357,7 @@ SubversionPluginPrivate::SubversionPluginPrivate()
|
|||||||
{
|
{
|
||||||
dd = this;
|
dd = this;
|
||||||
|
|
||||||
m_client = new SubversionClient(&m_settings);
|
m_client = new SubversionClient();
|
||||||
|
|
||||||
setTopicCache(new SubversionTopicCache(this));
|
setTopicCache(new SubversionTopicCache(this));
|
||||||
|
|
||||||
@@ -524,7 +523,7 @@ SubversionPluginPrivate::SubversionPluginPrivate()
|
|||||||
subversionMenu->addAction(command);
|
subversionMenu->addAction(command);
|
||||||
m_commandLocator->appendCommand(command);
|
m_commandLocator->appendCommand(command);
|
||||||
|
|
||||||
connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged);
|
connect(&settings(), &AspectContainer::applied, this, &IVersionControl::configurationChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const
|
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const
|
||||||
@@ -640,7 +639,7 @@ void SubversionPluginPrivate::revertAll()
|
|||||||
QMessageBox::Yes, QMessageBox::No) == QMessageBox::No)
|
QMessageBox::Yes, QMessageBox::No) == QMessageBox::No)
|
||||||
return;
|
return;
|
||||||
// NoteL: Svn "revert ." doesn not work.
|
// NoteL: Svn "revert ." doesn not work.
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"revert"}};
|
CommandLine args{settings().binaryPath.filePath(), {"revert"}};
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
args << QLatin1String("--recursive") << state.topLevel().toString();
|
args << QLatin1String("--recursive") << state.topLevel().toString();
|
||||||
const auto revertResponse = runSvn(state.topLevel(), args, RunFlags::ShowStdOut);
|
const auto revertResponse = runSvn(state.topLevel(), args, RunFlags::ShowStdOut);
|
||||||
@@ -657,7 +656,7 @@ void SubversionPluginPrivate::revertCurrentFile()
|
|||||||
const VcsBasePluginState state = currentState();
|
const VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasFile(), return);
|
QTC_ASSERT(state.hasFile(), return);
|
||||||
|
|
||||||
CommandLine diffArgs{m_settings.binaryPath.filePath(), {"diff"}};
|
CommandLine diffArgs{settings().binaryPath.filePath(), {"diff"}};
|
||||||
diffArgs << SubversionClient::AddAuthOptions();
|
diffArgs << SubversionClient::AddAuthOptions();
|
||||||
diffArgs << SubversionClient::escapeFile(state.relativeCurrentFile());
|
diffArgs << SubversionClient::escapeFile(state.relativeCurrentFile());
|
||||||
|
|
||||||
@@ -675,7 +674,7 @@ void SubversionPluginPrivate::revertCurrentFile()
|
|||||||
FileChangeBlocker fcb(state.currentFile());
|
FileChangeBlocker fcb(state.currentFile());
|
||||||
|
|
||||||
// revert
|
// revert
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"revert"}};
|
CommandLine args{settings().binaryPath.filePath(), {"revert"}};
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
args << SubversionClient::escapeFile(state.relativeCurrentFile());
|
args << SubversionClient::escapeFile(state.relativeCurrentFile());
|
||||||
|
|
||||||
@@ -736,7 +735,7 @@ void SubversionPluginPrivate::startCommit(const FilePath &workingDir, const QStr
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"status"}};
|
CommandLine args{settings().binaryPath.filePath(), {"status"}};
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
args << SubversionClient::escapeFiles(files);
|
args << SubversionClient::escapeFiles(files);
|
||||||
|
|
||||||
@@ -815,7 +814,7 @@ void SubversionPluginPrivate::svnStatus(const FilePath &workingDir, const QStrin
|
|||||||
{
|
{
|
||||||
const VcsBasePluginState state = currentState();
|
const VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasTopLevel(), return);
|
QTC_ASSERT(state.hasTopLevel(), return);
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"status"}};
|
CommandLine args{settings().binaryPath.filePath(), {"status"}};
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
if (!relativePath.isEmpty())
|
if (!relativePath.isEmpty())
|
||||||
args << SubversionClient::escapeFile(relativePath);
|
args << SubversionClient::escapeFile(relativePath);
|
||||||
@@ -841,7 +840,7 @@ void SubversionPluginPrivate::updateProject()
|
|||||||
|
|
||||||
void SubversionPluginPrivate::svnUpdate(const FilePath &workingDir, const QString &relativePath)
|
void SubversionPluginPrivate::svnUpdate(const FilePath &workingDir, const QString &relativePath)
|
||||||
{
|
{
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"update"}};
|
CommandLine args{settings().binaryPath.filePath(), {"update"}};
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
args << Constants::NON_INTERACTIVE_OPTION;
|
args << Constants::NON_INTERACTIVE_OPTION;
|
||||||
if (!relativePath.isEmpty())
|
if (!relativePath.isEmpty())
|
||||||
@@ -865,9 +864,9 @@ void SubversionPluginPrivate::vcsAnnotateHelper(const FilePath &workingDir, cons
|
|||||||
const FilePath source = VcsBaseEditor::getSource(workingDir, file);
|
const FilePath source = VcsBaseEditor::getSource(workingDir, file);
|
||||||
QTextCodec *codec = VcsBaseEditor::getCodec(source);
|
QTextCodec *codec = VcsBaseEditor::getCodec(source);
|
||||||
|
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"annotate"}};
|
CommandLine args{settings().binaryPath.filePath(), {"annotate"}};
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
if (m_settings.spaceIgnorantAnnotation.value())
|
if (settings().spaceIgnorantAnnotation.value())
|
||||||
args << "-x" << "-uw";
|
args << "-x" << "-uw";
|
||||||
if (!revision.isEmpty())
|
if (!revision.isEmpty())
|
||||||
args << "-r" << revision;
|
args << "-r" << revision;
|
||||||
@@ -949,10 +948,10 @@ CommandResult SubversionPluginPrivate::runSvn(const FilePath &workingDir,
|
|||||||
const CommandLine &command, RunFlags flags,
|
const CommandLine &command, RunFlags flags,
|
||||||
QTextCodec *outputCodec, int timeoutMutiplier) const
|
QTextCodec *outputCodec, int timeoutMutiplier) const
|
||||||
{
|
{
|
||||||
if (m_settings.binaryPath().isEmpty())
|
if (settings().binaryPath().isEmpty())
|
||||||
return CommandResult(ProcessResult::StartFailed, Tr::tr("No subversion executable specified."));
|
return CommandResult(ProcessResult::StartFailed, Tr::tr("No subversion executable specified."));
|
||||||
|
|
||||||
const int timeoutS = m_settings.timeout() * timeoutMutiplier;
|
const int timeoutS = settings().timeout() * timeoutMutiplier;
|
||||||
return m_client->vcsSynchronousExec(workingDir, command, flags, timeoutS, outputCodec);
|
return m_client->vcsSynchronousExec(workingDir, command, flags, timeoutS, outputCodec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1008,7 +1007,7 @@ QString SubversionPluginPrivate::synchronousTopic(const FilePath &repository) co
|
|||||||
bool SubversionPluginPrivate::vcsAdd(const FilePath &workingDir, const QString &rawFileName)
|
bool SubversionPluginPrivate::vcsAdd(const FilePath &workingDir, const QString &rawFileName)
|
||||||
{
|
{
|
||||||
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
|
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
|
||||||
CommandLine args{m_settings.binaryPath.filePath()};
|
CommandLine args{settings().binaryPath.filePath()};
|
||||||
args << "add" << SubversionClient::AddAuthOptions() << "--parents" << file;
|
args << "add" << SubversionClient::AddAuthOptions() << "--parents" << file;
|
||||||
return runSvn(workingDir, args, RunFlags::ShowStdOut).result()
|
return runSvn(workingDir, args, RunFlags::ShowStdOut).result()
|
||||||
== ProcessResult::FinishedWithSuccess;
|
== ProcessResult::FinishedWithSuccess;
|
||||||
@@ -1018,7 +1017,7 @@ bool SubversionPluginPrivate::vcsDelete(const FilePath &workingDir, const QStrin
|
|||||||
{
|
{
|
||||||
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
|
const QString file = QDir::toNativeSeparators(SubversionClient::escapeFile(rawFileName));
|
||||||
|
|
||||||
CommandLine args{m_settings.binaryPath.filePath()};
|
CommandLine args{settings().binaryPath.filePath()};
|
||||||
args << "delete" << SubversionClient::AddAuthOptions() << "--force" << file;
|
args << "delete" << SubversionClient::AddAuthOptions() << "--force" << file;
|
||||||
|
|
||||||
return runSvn(workingDir, args, RunFlags::ShowStdOut).result()
|
return runSvn(workingDir, args, RunFlags::ShowStdOut).result()
|
||||||
@@ -1027,7 +1026,7 @@ bool SubversionPluginPrivate::vcsDelete(const FilePath &workingDir, const QStrin
|
|||||||
|
|
||||||
bool SubversionPluginPrivate::vcsMove(const FilePath &workingDir, const QString &from, const QString &to)
|
bool SubversionPluginPrivate::vcsMove(const FilePath &workingDir, const QString &from, const QString &to)
|
||||||
{
|
{
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"move"}};
|
CommandLine args{settings().binaryPath.filePath(), {"move"}};
|
||||||
args << SubversionClient::AddAuthOptions()
|
args << SubversionClient::AddAuthOptions()
|
||||||
<< QDir::toNativeSeparators(SubversionClient::escapeFile(from))
|
<< QDir::toNativeSeparators(SubversionClient::escapeFile(from))
|
||||||
<< QDir::toNativeSeparators(SubversionClient::escapeFile(to));
|
<< QDir::toNativeSeparators(SubversionClient::escapeFile(to));
|
||||||
@@ -1040,7 +1039,7 @@ bool SubversionPluginPrivate::vcsCheckout(const FilePath &directory, const QByte
|
|||||||
QUrl tempUrl = QUrl::fromEncoded(url);
|
QUrl tempUrl = QUrl::fromEncoded(url);
|
||||||
const QString username = tempUrl.userName();
|
const QString username = tempUrl.userName();
|
||||||
const QString password = tempUrl.password();
|
const QString password = tempUrl.password();
|
||||||
CommandLine args{m_settings.binaryPath.filePath(), {"checkout"}};
|
CommandLine args{settings().binaryPath.filePath(), {"checkout"}};
|
||||||
args << Constants::NON_INTERACTIVE_OPTION;
|
args << Constants::NON_INTERACTIVE_OPTION;
|
||||||
|
|
||||||
if (!username.isEmpty()) {
|
if (!username.isEmpty()) {
|
||||||
@@ -1087,7 +1086,7 @@ bool SubversionPluginPrivate::managesDirectory(const FilePath &directory, FilePa
|
|||||||
|
|
||||||
bool SubversionPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const
|
bool SubversionPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const
|
||||||
{
|
{
|
||||||
CommandLine args{m_settings.binaryPath.filePath()};
|
CommandLine args{settings().binaryPath.filePath()};
|
||||||
args << "status" << SubversionClient::AddAuthOptions()
|
args << "status" << SubversionClient::AddAuthOptions()
|
||||||
<< QDir::toNativeSeparators(SubversionClient::escapeFile(fileName));
|
<< QDir::toNativeSeparators(SubversionClient::escapeFile(fileName));
|
||||||
const QString output = runSvn(workingDirectory, args).cleanedStdOut();
|
const QString output = runSvn(workingDirectory, args).cleanedStdOut();
|
||||||
@@ -1126,7 +1125,7 @@ bool SubversionPluginPrivate::isVcsFileOrDirectory(const FilePath &filePath) con
|
|||||||
|
|
||||||
bool SubversionPluginPrivate::isConfigured() const
|
bool SubversionPluginPrivate::isConfigured() const
|
||||||
{
|
{
|
||||||
const FilePath binary = m_settings.binaryPath.filePath();
|
const FilePath binary = settings().binaryPath.filePath();
|
||||||
if (binary.isEmpty())
|
if (binary.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
QFileInfo fi = binary.toFileInfo();
|
QFileInfo fi = binary.toFileInfo();
|
||||||
@@ -1189,7 +1188,7 @@ VcsCommand *SubversionPluginPrivate::createInitialCheckoutCommand(const QString
|
|||||||
const QString &localName,
|
const QString &localName,
|
||||||
const QStringList &extraArgs)
|
const QStringList &extraArgs)
|
||||||
{
|
{
|
||||||
CommandLine args{m_settings.binaryPath.filePath()};
|
CommandLine args{settings().binaryPath.filePath()};
|
||||||
args << "checkout";
|
args << "checkout";
|
||||||
args << SubversionClient::AddAuthOptions();
|
args << SubversionClient::AddAuthOptions();
|
||||||
args << Subversion::Constants::NON_INTERACTIVE_OPTION << extraArgs << url << localName;
|
args << Subversion::Constants::NON_INTERACTIVE_OPTION << extraArgs << url << localName;
|
||||||
|
@@ -78,15 +78,15 @@ bool SubversionSettings::hasAuthentication() const
|
|||||||
return useAuthentication.value() && !userName.value().isEmpty();
|
return useAuthentication.value() && !userName.value().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings)
|
SubversionSettingsPage::SubversionSettingsPage()
|
||||||
{
|
{
|
||||||
setId(VcsBase::Constants::VCS_ID_SUBVERSION);
|
setId(VcsBase::Constants::VCS_ID_SUBVERSION);
|
||||||
setDisplayName(Tr::tr("Subversion"));
|
setDisplayName(Tr::tr("Subversion"));
|
||||||
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
|
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
|
||||||
setSettings(settings);
|
setSettings(&settings());
|
||||||
|
|
||||||
setLayouter([settings](QWidget *widget) {
|
setLayouter([](QWidget *widget) {
|
||||||
SubversionSettings &s = *settings;
|
SubversionSettings &s = settings();
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
@@ -117,4 +117,10 @@ SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SubversionSettings &settings()
|
||||||
|
{
|
||||||
|
static SubversionSettings theSettings;
|
||||||
|
return theSettings;
|
||||||
|
}
|
||||||
|
|
||||||
} // Subversion::Internal
|
} // Subversion::Internal
|
||||||
|
@@ -23,10 +23,12 @@ public:
|
|||||||
Utils::BoolAspect logVerbose;
|
Utils::BoolAspect logVerbose;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SubversionSettings &settings();
|
||||||
|
|
||||||
class SubversionSettingsPage final : public Core::IOptionsPage
|
class SubversionSettingsPage final : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit SubversionSettingsPage(SubversionSettings *settings);
|
SubversionSettingsPage();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Subversion::Internal
|
} // Subversion::Internal
|
||||||
|
Reference in New Issue
Block a user