mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-22 21:15:55 +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;
|
||||
}
|
||||
|
||||
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);
|
||||
// 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)
|
||||
|
@ -970,6 +960,9 @@ void PropagateDownloadFile::downloadFinished()
|
|||
}
|
||||
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
|
||||
// phase by comparing size and mtime to the previous values. This
|
||||
// is necessary to avoid overwriting user changes that happened between
|
||||
|
@ -986,8 +979,15 @@ void PropagateDownloadFile::downloadFinished()
|
|||
// Apply the remote permissions
|
||||
FileSystem::setFileReadOnlyWeak(_tmpFile.fileName(), !_item->_remotePerm.isNull() && !_item->_remotePerm.hasPermission(RemotePermissions::CanWrite));
|
||||
|
||||
// Make the file a hydrated placeholder if possible
|
||||
propagator()->syncOptions()._vfs->convertToPlaceholder(_tmpFile.fileName(), *_item, fn);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
QString error;
|
||||
emit propagator()->touchedFile(fn);
|
||||
|
|
Loading…
Reference in a new issue