forked from qt-creator/qt-creator
Docker: add option to disable file path mapping
Can be used to easily reproduce the current windows state that has no way to map the remote file system to a local path on other systems like linux. Change-Id: I32cd1852dd0b4fc0890a503c244f34065c29e18c Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -385,6 +385,15 @@ public:
|
|||||||
data.useLocalUidGid = on;
|
data.useLocalUidGid = on;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
m_usePathMapping = new QCheckBox(tr("Use local file path mapping"));
|
||||||
|
m_usePathMapping->setToolTip(tr("Map docker filesystem to a local directory."));
|
||||||
|
m_usePathMapping->setChecked(data.useFilePathMapping);
|
||||||
|
m_usePathMapping->setEnabled(HostOsInfo::isLinuxHost());
|
||||||
|
connect(m_usePathMapping, &QCheckBox::toggled, this, [&, dockerDevice](bool on) {
|
||||||
|
data.useFilePathMapping = on;
|
||||||
|
dockerDevice->tryCreateLocalFileAccess();
|
||||||
|
});
|
||||||
|
|
||||||
m_pathsLineEdit = new QLineEdit;
|
m_pathsLineEdit = new QLineEdit;
|
||||||
m_pathsLineEdit->setText(data.repo);
|
m_pathsLineEdit->setText(data.repo);
|
||||||
m_pathsLineEdit->setToolTip(tr("Paths in this semi-colon separated list will be "
|
m_pathsLineEdit->setToolTip(tr("Paths in this semi-colon separated list will be "
|
||||||
@@ -433,6 +442,7 @@ public:
|
|||||||
repoLabel, m_repoLineEdit, Break(),
|
repoLabel, m_repoLineEdit, Break(),
|
||||||
daemonStateLabel, m_daemonReset, m_daemonState, Break(),
|
daemonStateLabel, m_daemonReset, m_daemonState, Break(),
|
||||||
m_runAsOutsideUser, Break(),
|
m_runAsOutsideUser, Break(),
|
||||||
|
m_usePathMapping, Break(),
|
||||||
tr("Paths to mount:"), m_pathsLineEdit, Break(),
|
tr("Paths to mount:"), m_pathsLineEdit, Break(),
|
||||||
Column {
|
Column {
|
||||||
Space(20),
|
Space(20),
|
||||||
@@ -452,6 +462,7 @@ private:
|
|||||||
QToolButton *m_daemonReset;
|
QToolButton *m_daemonReset;
|
||||||
QLabel *m_daemonState;
|
QLabel *m_daemonState;
|
||||||
QCheckBox *m_runAsOutsideUser;
|
QCheckBox *m_runAsOutsideUser;
|
||||||
|
QCheckBox *m_usePathMapping;
|
||||||
QLineEdit *m_pathsLineEdit;
|
QLineEdit *m_pathsLineEdit;
|
||||||
|
|
||||||
KitDetector m_kitItemDetector;
|
KitDetector m_kitItemDetector;
|
||||||
@@ -880,6 +891,13 @@ void DockerDevicePrivate::tryCreateLocalFileAccess()
|
|||||||
if (!m_shell)
|
if (!m_shell)
|
||||||
startContainer();
|
startContainer();
|
||||||
|
|
||||||
|
if (!m_data.useFilePathMapping) {
|
||||||
|
if (!m_mergedDir.isEmpty()) {
|
||||||
|
m_mergedDirWatcher.removePath(m_mergedDir);
|
||||||
|
m_mergedDir.clear();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!DockerPlugin::isDaemonRunning().value_or(false))
|
if (!DockerPlugin::isDaemonRunning().value_or(false))
|
||||||
return;
|
return;
|
||||||
QtcProcess proc;
|
QtcProcess proc;
|
||||||
@@ -955,6 +973,7 @@ const char DockerDeviceDataRepoKey[] = "DockerDeviceDataRepo";
|
|||||||
const char DockerDeviceDataTagKey[] = "DockerDeviceDataTag";
|
const char DockerDeviceDataTagKey[] = "DockerDeviceDataTag";
|
||||||
const char DockerDeviceDataSizeKey[] = "DockerDeviceDataSize";
|
const char DockerDeviceDataSizeKey[] = "DockerDeviceDataSize";
|
||||||
const char DockerDeviceUseOutsideUser[] = "DockerDeviceUseUidGid";
|
const char DockerDeviceUseOutsideUser[] = "DockerDeviceUseUidGid";
|
||||||
|
const char DockerDeviceUseFilePathMapping[] = "DockerDeviceFilePathMapping";
|
||||||
const char DockerDeviceMappedPaths[] = "DockerDeviceMappedPaths";
|
const char DockerDeviceMappedPaths[] = "DockerDeviceMappedPaths";
|
||||||
|
|
||||||
void DockerDevice::fromMap(const QVariantMap &map)
|
void DockerDevice::fromMap(const QVariantMap &map)
|
||||||
@@ -966,6 +985,8 @@ void DockerDevice::fromMap(const QVariantMap &map)
|
|||||||
d->m_data.size = map.value(DockerDeviceDataSizeKey).toString();
|
d->m_data.size = map.value(DockerDeviceDataSizeKey).toString();
|
||||||
d->m_data.useLocalUidGid = map.value(DockerDeviceUseOutsideUser,
|
d->m_data.useLocalUidGid = map.value(DockerDeviceUseOutsideUser,
|
||||||
HostOsInfo::isLinuxHost()).toBool();
|
HostOsInfo::isLinuxHost()).toBool();
|
||||||
|
d->m_data.useFilePathMapping = map.value(DockerDeviceUseFilePathMapping,
|
||||||
|
HostOsInfo::isLinuxHost()).toBool();
|
||||||
d->m_data.mounts = map.value(DockerDeviceMappedPaths).toStringList();
|
d->m_data.mounts = map.value(DockerDeviceMappedPaths).toStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -977,6 +998,7 @@ QVariantMap DockerDevice::toMap() const
|
|||||||
map.insert(DockerDeviceDataTagKey, d->m_data.tag);
|
map.insert(DockerDeviceDataTagKey, d->m_data.tag);
|
||||||
map.insert(DockerDeviceDataSizeKey, d->m_data.size);
|
map.insert(DockerDeviceDataSizeKey, d->m_data.size);
|
||||||
map.insert(DockerDeviceUseOutsideUser, d->m_data.useLocalUidGid);
|
map.insert(DockerDeviceUseOutsideUser, d->m_data.useLocalUidGid);
|
||||||
|
map.insert(DockerDeviceUseFilePathMapping, d->m_data.useFilePathMapping);
|
||||||
map.insert(DockerDeviceMappedPaths, d->m_data.mounts);
|
map.insert(DockerDeviceMappedPaths, d->m_data.mounts);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public:
|
|||||||
QString tag;
|
QString tag;
|
||||||
QString size;
|
QString size;
|
||||||
bool useLocalUidGid = true;
|
bool useLocalUidGid = true;
|
||||||
|
bool useFilePathMapping = true;
|
||||||
QStringList mounts;
|
QStringList mounts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user