diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-04-23 15:57:54 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-05-24 16:37:44 +0000 |
commit | b70d39a091a525ddc8816b0835aaa9eda975e258 (patch) | |
tree | 76648ad9c3fd20134bc762219042ac8e6d1529c0 | |
parent | f8e21037e30ad58204dfba6dd31a5d9d5489ac53 (diff) |
RemoteLinux: Let user specify the rsync flags
Task-number: QTCREATORBUG-22352
Change-Id: I11c16b5f7c58093bb89a9493a8742f338dbdd9c1
Reviewed-by: hjk <hjk@qt.io>
-rw-r--r-- | src/plugins/remotelinux/linuxdevicetester.cpp | 3 | ||||
-rw-r--r-- | src/plugins/remotelinux/rsyncdeploystep.cpp | 22 | ||||
-rw-r--r-- | src/plugins/remotelinux/rsyncdeploystep.h | 4 |
3 files changed, 24 insertions, 5 deletions
diff --git a/src/plugins/remotelinux/linuxdevicetester.cpp b/src/plugins/remotelinux/linuxdevicetester.cpp index 348f41d6e5..bef26118c3 100644 --- a/src/plugins/remotelinux/linuxdevicetester.cpp +++ b/src/plugins/remotelinux/linuxdevicetester.cpp @@ -230,7 +230,8 @@ void GenericLinuxDeviceTester::testRsync() this, [this] { handleRsyncFinished(); }); - const RsyncCommandLine cmdLine = RsyncDeployStep::rsyncCommand(*d->connection); + const RsyncCommandLine cmdLine = RsyncDeployStep::rsyncCommand(*d->connection, + RsyncDeployStep::defaultFlags()); const QStringList args = QStringList(cmdLine.options) << "-n" << "--exclude=*" << (cmdLine.remoteHostSpec + ":/tmp"); d->rsyncProcess.start("rsync", args); diff --git a/src/plugins/remotelinux/rsyncdeploystep.cpp b/src/plugins/remotelinux/rsyncdeploystep.cpp index 644ad1c3d6..25dc0b28d5 100644 --- a/src/plugins/remotelinux/rsyncdeploystep.cpp +++ b/src/plugins/remotelinux/rsyncdeploystep.cpp @@ -51,6 +51,7 @@ public: void setDeployableFiles(const QList<DeployableFile> &files) { m_deployableFiles = files; } void setIgnoreMissingFiles(bool ignore) { m_ignoreMissingFiles = ignore; } + void setFlags(const QString &flags) { m_flags = flags; } private: bool isDeploymentNecessary() const override; @@ -69,6 +70,7 @@ private: mutable QList<DeployableFile> m_deployableFiles; bool m_ignoreMissingFiles = false; + QString m_flags; SshProcess m_rsync; SshRemoteProcessPtr m_mkdir; }; @@ -155,7 +157,7 @@ void RsyncDeployService::deployNextFile() return; } const DeployableFile file = m_deployableFiles.takeFirst(); - const RsyncCommandLine cmdLine = RsyncDeployStep::rsyncCommand(*connection()); + const RsyncCommandLine cmdLine = RsyncDeployStep::rsyncCommand(*connection(), m_flags); const QStringList args = QStringList(cmdLine.options) << file.localFilePath().toString() << (cmdLine.remoteHostSpec + ':' + file.remoteFilePath()); @@ -180,11 +182,18 @@ class RsyncDeployStep::RsyncDeployStepPrivate public: Internal::RsyncDeployService deployService; BaseBoolAspect *ignoreMissingFilesAspect; + BaseStringAspect *flagsAspect; }; RsyncDeployStep::RsyncDeployStep(BuildStepList *bsl) : AbstractRemoteLinuxDeployStep(bsl, stepId()), d(new RsyncDeployStepPrivate) { + d->flagsAspect = addAspect<BaseStringAspect>(); + d->flagsAspect->setDisplayStyle(BaseStringAspect::LineEditDisplay); + d->flagsAspect->setSettingsKey("RemoteLinux.RsyncDeployStep.Flags"); + d->flagsAspect->setLabelText(tr("Flags:")); + d->flagsAspect->setValue(defaultFlags()); + d->ignoreMissingFilesAspect = addAspect<BaseBoolAspect>(); d->ignoreMissingFilesAspect ->setSettingsKey("RemoteLinux.RsyncDeployStep.IgnoreMissingFiles"); @@ -202,6 +211,7 @@ RsyncDeployStep::~RsyncDeployStep() CheckResult RsyncDeployStep::initInternal() { d->deployService.setIgnoreMissingFiles(d->ignoreMissingFilesAspect->value()); + d->deployService.setFlags(d->flagsAspect->value()); return d->deployService.isDeploymentPossible(); } @@ -226,13 +236,19 @@ QString RsyncDeployStep::displayName() return tr("Deploy files via rsync"); } -RsyncCommandLine RsyncDeployStep::rsyncCommand(const SshConnection &sshConnection) +QString RsyncDeployStep::defaultFlags() +{ + return QString("-av"); +} + +RsyncCommandLine RsyncDeployStep::rsyncCommand(const SshConnection &sshConnection, + const QString &flags) { const QString sshCmdLine = QtcProcess::joinArgs( QStringList{SshSettings::sshFilePath().toUserOutput()} << sshConnection.connectionOptions()); const SshConnectionParameters sshParams = sshConnection.connectionParameters(); - return RsyncCommandLine(QStringList{"-e", sshCmdLine, "-av"}, + return RsyncCommandLine(QStringList{"-e", sshCmdLine, flags}, sshParams.userName() + '@' + sshParams.host()); } diff --git a/src/plugins/remotelinux/rsyncdeploystep.h b/src/plugins/remotelinux/rsyncdeploystep.h index ed81646882..e71a57a11d 100644 --- a/src/plugins/remotelinux/rsyncdeploystep.h +++ b/src/plugins/remotelinux/rsyncdeploystep.h @@ -51,7 +51,9 @@ public: static Core::Id stepId(); static QString displayName(); - static RsyncCommandLine rsyncCommand(const QSsh::SshConnection &sshConnection); + static QString defaultFlags(); + static RsyncCommandLine rsyncCommand(const QSsh::SshConnection &sshConnection, + const QString &flags); private: AbstractRemoteLinuxDeployService *deployService() const override; |