diff options
author | Jarek Kobus <[email protected]> | 2025-07-02 13:16:49 +0200 |
---|---|---|
committer | Jarek Kobus <[email protected]> | 2025-07-02 12:18:21 +0000 |
commit | 72815c6515f20b02bc5a689cbc4cfc5dd1d5dc61 (patch) | |
tree | cefc49b0a817ec5bd2100a54eefa326b478e5cac | |
parent | 97bb5953bade90500bd34d879787bac8301e8255 (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.cpp | 18 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.cpp | 17 | ||||
-rw-r--r-- | src/plugins/fossil/fossilplugin.cpp | 18 | ||||
-rw-r--r-- | src/plugins/git/gitplugin.cpp | 18 | ||||
-rw-r--r-- | src/plugins/gitlab/gitlabclonedialog.cpp | 6 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.cpp | 16 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 16 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.cpp | 12 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseplugin.h | 14 | ||||
-rw-r--r-- | src/plugins/vcsbase/wizard/vcscommandpage.cpp | 4 |
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); |