// 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)
_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('/'))