aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2025-07-02 13:16:49 +0200
committerJarek Kobus <[email protected]>2025-07-02 12:18:21 +0000
commit72815c6515f20b02bc5a689cbc4cfc5dd1d5dc61 (patch)
treecefc49b0a817ec5bd2100a54eefa326b478e5cac
parent97bb5953bade90500bd34d879787bac8301e8255 (diff)
Vcs: Introduce InitialCheckoutData
And reuse it in createInitialCheckoutCommand(). Change-Id: I9eda0a5e95261b030e41af2e8cf5d8852c3e8a9a Reviewed-by: AndrĂ© Hartmann <[email protected]>
-rw-r--r--src/plugins/bazaar/bazaarplugin.cpp18
-rw-r--r--src/plugins/cvs/cvsplugin.cpp17
-rw-r--r--src/plugins/fossil/fossilplugin.cpp18
-rw-r--r--src/plugins/git/gitplugin.cpp18
-rw-r--r--src/plugins/gitlab/gitlabclonedialog.cpp6
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp16
-rw-r--r--src/plugins/subversion/subversionplugin.cpp16
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.cpp12
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.h14
-rw-r--r--src/plugins/vcsbase/wizard/vcscommandpage.cpp4
10 files changed, 51 insertions, 88 deletions
diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp
index 3f72af4a603..9160355150b 100644
--- a/src/plugins/bazaar/bazaarplugin.cpp
+++ b/src/plugins/bazaar/bazaarplugin.cpp
@@ -149,10 +149,7 @@ public:
}
void vcsDescribe(const Utils::FilePath &source, const QString &id) final { m_client.view(source, id); }
- VcsCommand *createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs) final;
+ VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data) final;
// To be connected to the VCSTask's success signal to emit the repository/
// files changed signals according to the variant's type:
@@ -943,16 +940,13 @@ void BazaarPluginPrivate::vcsAnnotate(const FilePath &file, int line)
m_client.annotate(file.parentDir(), file.fileName(), line);
}
-VcsCommand *BazaarPluginPrivate::createInitialCheckoutCommand(const QString &url,
- const FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
+VcsCommand *BazaarPluginPrivate::createInitialCheckoutCommand(const InitialCheckoutData &data)
{
- Environment env = m_client.processEnvironment(baseDirectory);
+ Environment env = m_client.processEnvironment(data.baseDirectory);
env.set("BZR_PROGRESS_BAR", "text");
- auto command = VcsBaseClient::createVcsCommand(baseDirectory, env);
- command->addJob({m_client.vcsBinary(baseDirectory),
- {m_client.vcsCommandString(BazaarClient::CloneCommand), extraArgs, url, localName}}, -1);
+ auto command = VcsBaseClient::createVcsCommand(data.baseDirectory, env);
+ command->addJob({m_client.vcsBinary(data.baseDirectory),
+ {m_client.vcsCommandString(BazaarClient::CloneCommand), data.extraArgs, data.url, data.localName}}, -1);
return command;
}
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index b5beeecbe68..f6fd1c14fad 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -180,11 +180,7 @@ public:
QString vcsOpenText() const final;
- VcsCommand *createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs) final;
-
+ VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data) final;
///
CvsSubmitEditor *openCVSSubmitEditor(const QString &fileName);
@@ -402,17 +398,14 @@ QString CvsPluginPrivate::vcsOpenText() const
return Tr::tr("&Edit");
}
-VcsCommand *CvsPluginPrivate::createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
+VcsCommand *CvsPluginPrivate::createInitialCheckoutCommand(const InitialCheckoutData &data)
{
- QTC_ASSERT(localName == url, return nullptr);
+ QTC_ASSERT(data.localName == data.url, return nullptr);
QStringList args;
- args << QLatin1String("checkout") << url << extraArgs;
+ args << QLatin1String("checkout") << data.url << data.extraArgs;
- auto command = VcsBaseClient::createVcsCommand(baseDirectory, Environment::systemEnvironment());
+ auto command = VcsBaseClient::createVcsCommand(data.baseDirectory, Environment::systemEnvironment());
command->setDisplayName(Tr::tr("CVS Checkout"));
command->addJob({settings().binaryPath(), settings().addOptions(args)}, -1);
return command;
diff --git a/src/plugins/fossil/fossilplugin.cpp b/src/plugins/fossil/fossilplugin.cpp
index 9225685e82c..408f7bac1b0 100644
--- a/src/plugins/fossil/fossilplugin.cpp
+++ b/src/plugins/fossil/fossilplugin.cpp
@@ -101,10 +101,7 @@ public:
fossilClient().log(topLevel, {relativeDirectory.path()}, options);
}
- VcsCommand *createInitialCheckoutCommand(const QString &url,
- const FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs) final;
+ VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data) final;
void updateActions(VersionControlBase::ActionState) override;
bool activateCommit() override;
@@ -887,12 +884,9 @@ void FossilPluginPrivate::vcsDescribe(const FilePath &source, const QString &id)
fossilClient().view(source, id);
}
-VcsCommand *FossilPluginPrivate::createInitialCheckoutCommand(const QString &sourceUrl,
- const FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
+VcsCommand *FossilPluginPrivate::createInitialCheckoutCommand(const InitialCheckoutData &data)
{
- const QMap<QString, QString> options = FossilJsExtension::parseArgOptions(extraArgs);
+ const QMap<QString, QString> options = FossilJsExtension::parseArgOptions(data.extraArgs);
// Two operating modes:
// 1) CloneCheckout:
@@ -905,7 +899,7 @@ VcsCommand *FossilPluginPrivate::createInitialCheckoutCommand(const QString &sou
// -- open/checkout an existing local fossil
// Clone URL is an absolute local path and is the same as the local fossil.
- const FilePath checkoutPath = baseDirectory.pathAppended(localName);
+ const FilePath checkoutPath = data.baseDirectory.pathAppended(data.localName);
const QString fossilFile = options.value("fossil-file");
const FilePath fossilFilePath = FilePath::fromUserInput(QDir::fromNativeSeparators(fossilFile));
const QString fossilFileNative = fossilFilePath.toUserOutput();
@@ -914,7 +908,7 @@ VcsCommand *FossilPluginPrivate::createInitialCheckoutCommand(const QString &sou
// Check when requested to clone a local repository and clone-into repository file is the same
// or not specified.
// In this case handle it as local fossil checkout request.
- const QUrl url(sourceUrl);
+ const QUrl url(data.url);
bool isLocalRepository = (options.value("repository-type") == "localRepo");
if (url.isLocalFile() || url.isRelative()) {
@@ -967,7 +961,7 @@ VcsCommand *FossilPluginPrivate::createInitialCheckoutCommand(const QString &sou
command->addJob({fossilClient().vcsBinary(checkoutPath),
{fossilClient().vcsCommandString(FossilClient::CloneCommand), extraOptions,
- sourceUrl, fossilFileNative}}, -1);
+ data.url, fossilFileNative}}, -1);
}
// check out the cloned repository file into the working copy directory;
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 9dfbd9207e6..03010023d6f 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -174,10 +174,7 @@ public:
void vcsDescribe(const FilePath &source, const QString &id) final { gitClient().show(source, id); }
QString vcsTopic(const FilePath &directory) final;
- VcsCommand *createInitialCheckoutCommand(const QString &url,
- const FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs) final;
+ VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data) final;
void fillLinkContextMenu(QMenu *menu,
const FilePath &workingDirectory,
@@ -1949,16 +1946,13 @@ QString GitPluginPrivate::vcsTopic(const FilePath &directory)
return topic;
}
-VcsCommand *GitPluginPrivate::createInitialCheckoutCommand(const QString &url,
- const FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
+VcsCommand *GitPluginPrivate::createInitialCheckoutCommand(const InitialCheckoutData &data)
{
- auto command = VcsBaseClient::createVcsCommand(baseDirectory,
- gitClient().processEnvironment(baseDirectory));
+ auto command = VcsBaseClient::createVcsCommand(data.baseDirectory,
+ gitClient().processEnvironment(data.baseDirectory));
command->addFlags(RunFlags::SuppressStdErr);
- command->addJob({gitClient().vcsBinary(baseDirectory),
- {"clone", "--progress", extraArgs, url, localName}}, -1);
+ command->addJob({gitClient().vcsBinary(data.baseDirectory),
+ {"clone", "--progress", data.extraArgs, data.url, data.localName}}, -1);
return command;
}
diff --git a/src/plugins/gitlab/gitlabclonedialog.cpp b/src/plugins/gitlab/gitlabclonedialog.cpp
index a58568b0d74..6c37b9846e9 100644
--- a/src/plugins/gitlab/gitlabclonedialog.cpp
+++ b/src/plugins/gitlab/gitlabclonedialog.cpp
@@ -136,9 +136,9 @@ void GitLabCloneDialog::cloneProject()
QTC_ASSERT(vc, return);
const QStringList extraArgs = m_submodulesCB->isChecked() ? QStringList{ "--recursive" }
: QStringList{};
- m_command = vc->createInitialCheckoutCommand(m_repositoryCB->currentText(),
- m_pathChooser->absoluteFilePath(),
- m_directoryLE->text(), extraArgs);
+ m_command = vc->createInitialCheckoutCommand({m_repositoryCB->currentText(),
+ m_pathChooser->absoluteFilePath(),
+ m_directoryLE->text(), extraArgs});
const FilePath workingDirectory = m_pathChooser->absoluteFilePath();
m_command->addFlags(RunFlags::ProgressiveOutput);
connect(m_command, &VcsCommand::stdOutText, this, [this](const QString &text) {
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index bd19b39a6e9..ce6c4ca7ef2 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -80,10 +80,7 @@ public:
mercurialClient().view(source, id);
}
- VcsCommand *createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs) final;
+ VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data) final;
// To be connected to the HgTask's success signal to emit the repository/
// files changed signals according to the variant's type:
@@ -727,14 +724,11 @@ void MercurialPluginPrivate::vcsAnnotate(const FilePath &filePath, int line)
mercurialClient().annotate(filePath.parentDir(), filePath.fileName(), line);
}
-VcsCommand *MercurialPluginPrivate::createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
+VcsCommand *MercurialPluginPrivate::createInitialCheckoutCommand(const InitialCheckoutData &data)
{
- auto command = VcsBaseClient::createVcsCommand(baseDirectory,
- mercurialClient().processEnvironment(baseDirectory));
- command->addJob({settings().binaryPath(), {"clone", extraArgs, url, localName}}, -1);
+ auto command = VcsBaseClient::createVcsCommand(data.baseDirectory,
+ mercurialClient().processEnvironment(data.baseDirectory));
+ command->addJob({settings().binaryPath(), {"clone", data.extraArgs, data.url, data.localName}}, -1);
return command;
}
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 9b0b05bea4c..ce535d88f6a 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -148,10 +148,7 @@ public:
}
void vcsDescribe(const FilePath &source, const QString &changeNr) final;
- VcsCommand *createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs) final;
+ VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data) final;
bool isVcsDirectory(const Utils::FilePath &fileName) const;
@@ -1069,18 +1066,15 @@ void SubversionPluginPrivate::vcsAnnotate(const FilePath &filePath, int line)
vcsAnnotateHelper(filePath.parentDir(), filePath.fileName(), QString(), line);
}
-VcsCommand *SubversionPluginPrivate::createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
+VcsCommand *SubversionPluginPrivate::createInitialCheckoutCommand(const InitialCheckoutData &data)
{
CommandLine args{settings().binaryPath()};
args << "checkout";
args << SubversionClient::AddAuthOptions();
- args << Subversion::Constants::NON_INTERACTIVE_OPTION << extraArgs << url << localName;
+ args << Subversion::Constants::NON_INTERACTIVE_OPTION << data.extraArgs << data.url << data.localName;
- auto command = VcsBaseClient::createVcsCommand(baseDirectory,
- subversionClient().processEnvironment(baseDirectory));
+ auto command = VcsBaseClient::createVcsCommand(data.baseDirectory,
+ subversionClient().processEnvironment(data.baseDirectory));
command->addJob(args, -1);
return command;
}
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index 94f6757ff92..fb7cc002a1a 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -560,15 +560,9 @@ const VcsBasePluginState &VersionControlBase::currentState() const
return m_state;
}
-VcsCommand *VersionControlBase::createInitialCheckoutCommand(const QString &url,
- const FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs)
-{
- Q_UNUSED(url)
- Q_UNUSED(baseDirectory)
- Q_UNUSED(localName)
- Q_UNUSED(extraArgs)
+VcsCommand *VersionControlBase::createInitialCheckoutCommand(const InitialCheckoutData &data)
+{
+ Q_UNUSED(data)
return nullptr;
}
diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h
index 73f50836a3b..70f725b35e9 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.h
+++ b/src/plugins/vcsbase/vcsbaseplugin.h
@@ -104,6 +104,15 @@ VCSBASE_EXPORT void setSource(Core::IDocument *document, const Utils::FilePath &
// Returns the source of editor contents.
VCSBASE_EXPORT Utils::FilePath source(Core::IDocument *document);
+class InitialCheckoutData
+{
+public:
+ QString url;
+ Utils::FilePath baseDirectory;
+ QString localName;
+ QStringList extraArgs;
+};
+
class VCSBASE_EXPORT VersionControlBase : public Core::IVersionControl
{
Q_OBJECT
@@ -122,10 +131,7 @@ public:
*
* \a extraArgs are passed on to the command being run.
*/
- virtual VcsCommand *createInitialCheckoutCommand(const QString &url,
- const Utils::FilePath &baseDirectory,
- const QString &localName,
- const QStringList &extraArgs);
+ virtual VcsCommand *createInitialCheckoutCommand(const InitialCheckoutData &data);
// Display name of the commit action
virtual QString commitDisplayName() const;
virtual QString commitAbortTitle() const;
diff --git a/src/plugins/vcsbase/wizard/vcscommandpage.cpp b/src/plugins/vcsbase/wizard/vcscommandpage.cpp
index caabb20cf29..ab38414464c 100644
--- a/src/plugins/vcsbase/wizard/vcscommandpage.cpp
+++ b/src/plugins/vcsbase/wizard/vcscommandpage.cpp
@@ -313,8 +313,8 @@ void VcsCommandPage::delayedInitialize()
extraArgs << tmp;
}
- VcsCommand *command = vc->createInitialCheckoutCommand(repo, FilePath::fromString(base),
- name, extraArgs);
+ VcsCommand *command = vc->createInitialCheckoutCommand({repo, FilePath::fromString(base),
+ name, extraArgs});
for (const JobData &job : std::as_const(m_additionalJobs)) {
QTC_ASSERT(!job.job.isEmpty(), continue);