mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-26 15:06:08 +03:00
PropagateDownload: Conflict-rename later
The block of code that propagated attributes etc from the previously existing file was placed *after* the block that renamed the previously existing file to a conflict name. That meant the propagation didn't work in the conflict case.
This commit is contained in:
parent
6c5fa1dadd
commit
e6ee5d0f8a
1 changed files with 12 additions and 12 deletions
|
@ -947,16 +947,6 @@ void PropagateDownloadFile::downloadFinished()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isConflict = _item->_instruction == CSYNC_INSTRUCTION_CONFLICT
|
|
||||||
&& (QFileInfo(fn).isDir() || !FileSystem::fileEquals(fn, _tmpFile.fileName()));
|
|
||||||
if (isConflict) {
|
|
||||||
QString error;
|
|
||||||
if (!propagator()->createConflict(_item, _associatedComposite, &error)) {
|
|
||||||
done(SyncFileItem::SoftError, error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FileSystem::setModTime(_tmpFile.fileName(), _item->_modtime);
|
FileSystem::setModTime(_tmpFile.fileName(), _item->_modtime);
|
||||||
// We need to fetch the time again because some file systems such as FAT have worse than a second
|
// We need to fetch the time again because some file systems such as FAT have worse than a second
|
||||||
// Accuracy, and we really need the time from the file system. (#3103)
|
// Accuracy, and we really need the time from the file system. (#3103)
|
||||||
|
@ -970,6 +960,9 @@ void PropagateDownloadFile::downloadFinished()
|
||||||
}
|
}
|
||||||
preserveGroupOwnership(_tmpFile.fileName(), existingFile);
|
preserveGroupOwnership(_tmpFile.fileName(), existingFile);
|
||||||
|
|
||||||
|
// Make the file a hydrated placeholder if possible
|
||||||
|
propagator()->syncOptions()._vfs->convertToPlaceholder(_tmpFile.fileName(), *_item, fn);
|
||||||
|
|
||||||
// Check whether the existing file has changed since the discovery
|
// Check whether the existing file has changed since the discovery
|
||||||
// phase by comparing size and mtime to the previous values. This
|
// phase by comparing size and mtime to the previous values. This
|
||||||
// is necessary to avoid overwriting user changes that happened between
|
// is necessary to avoid overwriting user changes that happened between
|
||||||
|
@ -986,8 +979,15 @@ void PropagateDownloadFile::downloadFinished()
|
||||||
// Apply the remote permissions
|
// Apply the remote permissions
|
||||||
FileSystem::setFileReadOnlyWeak(_tmpFile.fileName(), !_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite));
|
FileSystem::setFileReadOnlyWeak(_tmpFile.fileName(), !_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite));
|
||||||
|
|
||||||
// Make the file a hydrated placeholder if possible
|
bool isConflict = _item->_instruction == CSYNC_INSTRUCTION_CONFLICT
|
||||||
propagator()->syncOptions()._vfs->convertToPlaceholder(_tmpFile.fileName(), *_item, fn);
|
&& (QFileInfo(fn).isDir() || !FileSystem::fileEquals(fn, _tmpFile.fileName()));
|
||||||
|
if (isConflict) {
|
||||||
|
QString error;
|
||||||
|
if (!propagator()->createConflict(_item, _associatedComposite, &error)) {
|
||||||
|
done(SyncFileItem::SoftError, error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString error;
|
QString error;
|
||||||
emit propagator()->touchedFile(fn);
|
emit propagator()->touchedFile(fn);
|
||||||
|
|
Loading…
Reference in a new issue