diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index f7e9cc1aa64..d2d53c487da 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -108,6 +108,22 @@ VcsCommand *VcsBaseClientImpl::createCommand(const FilePath &workingDirectory, return cmd; } +VcsCommand *VcsBaseClientImpl::execBgCommand(const FilePath &workingDirectory, + const QStringList &args, + const std::function &outputCallback, + unsigned flags) const +{ + VcsCommand *cmd = createCommand(workingDirectory); + cmd->addFlags(flags + | VcsCommand::SuppressCommandLogging + | VcsCommand::SuppressStdErr + | VcsCommand::SuppressFailMessage); + cmd->addJob({vcsBinary(), args}); + connect(cmd, &VcsCommand::stdOutText, this, outputCallback); + cmd->execute(); + return cmd; +} + void VcsBaseClientImpl::enqueueJob(VcsCommand *cmd, const QStringList &args, const ExitCodeInterpreter &interpreter) const { diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index 36141b3ef46..57bff0cb87e 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -82,6 +82,11 @@ public: VcsBaseEditorWidget *editor = nullptr, JobOutputBindMode mode = NoOutputBind) const; + VcsCommand *execBgCommand(const Utils::FilePath &workingDirectory, + const QStringList &args, + const std::function &outputCallback, + unsigned flags = 0) const; + void enqueueJob(VcsCommand *cmd, const QStringList &args, const Utils::ExitCodeInterpreter &interpreter = {}) const;