mirror of
https://github.com/nextcloud/desktop.git
synced 2025-10-26 11:17:43 +00:00
Add .sync-exclude.lst to exclude files
Previously the .sync-exclude.lst file of the sync root directory was not added to the exclude files, because the current logic did only recognize .sync-exclude.lst files when their containing directory was discovered during the discovery phase. Therefore the sync root .sync-exclude.lst file was never discovered. See also ExcludedFiles::traversalPatternMatch(). Fix: #3830, #2728 Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
This commit is contained in:
parent
f2811ea027
commit
a663d235ef
@ -232,18 +232,16 @@ ExcludedFiles::ExcludedFiles(const QString &localPath)
|
||||
// We're in a detached exclude probably coming from a partial sync or test
|
||||
if (_localPath.isEmpty())
|
||||
return;
|
||||
|
||||
// Load exclude file from base dir
|
||||
QFileInfo fi(_localPath + QStringLiteral(".sync-exclude.lst"));
|
||||
if (fi.isReadable())
|
||||
addInTreeExcludeFilePath(fi.absoluteFilePath());
|
||||
}
|
||||
|
||||
ExcludedFiles::~ExcludedFiles() = default;
|
||||
|
||||
void ExcludedFiles::addExcludeFilePath(const QString &path)
|
||||
{
|
||||
_excludeFiles[_localPath].append(path);
|
||||
auto &excludeFilesLocalPath = _excludeFiles[_localPath];
|
||||
if (std::find(excludeFilesLocalPath.cbegin(), excludeFilesLocalPath.cend(), path) == excludeFilesLocalPath.cend()) {
|
||||
excludeFilesLocalPath.append(path);
|
||||
}
|
||||
}
|
||||
|
||||
void ExcludedFiles::addInTreeExcludeFilePath(const QString &path)
|
||||
|
||||
@ -544,6 +544,11 @@ void SyncEngine::startSync()
|
||||
_discoveryPhase.reset(new DiscoveryPhase);
|
||||
_discoveryPhase->_account = _account;
|
||||
_discoveryPhase->_excludes = _excludedFiles.data();
|
||||
const QString excludeFilePath = _localPath + QStringLiteral(".sync-exclude.lst");
|
||||
if (QFile::exists(excludeFilePath)) {
|
||||
_discoveryPhase->_excludes->addExcludeFilePath(excludeFilePath);
|
||||
_discoveryPhase->_excludes->reloadExcludeFiles();
|
||||
}
|
||||
_discoveryPhase->_statedb = _journal;
|
||||
_discoveryPhase->_localDir = _localPath;
|
||||
if (!_discoveryPhase->_localDir.endsWith('/'))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user