aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-04-23 15:57:54 +0200
committerhjk <hjk@qt.io>2019-05-24 16:37:44 +0000
commitb70d39a091a525ddc8816b0835aaa9eda975e258 (patch)
tree76648ad9c3fd20134bc762219042ac8e6d1529c0
parentf8e21037e30ad58204dfba6dd31a5d9d5489ac53 (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.cpp3
-rw-r--r--src/plugins/remotelinux/rsyncdeploystep.cpp22
-rw-r--r--src/plugins/remotelinux/rsyncdeploystep.h4
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;