diff --git a/src/csync/csync_exclude.cpp b/src/csync/csync_exclude.cpp index 10f0b238ac..c15fc5e017 100644 --- a/src/csync/csync_exclude.cpp +++ b/src/csync/csync_exclude.cpp @@ -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) diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index e9f919f57e..6cd745aef4 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -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('/'))