mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-27 06:45:49 +03:00
Revert "Merge pull request #1454 from nextcloud/syncjournal-del-prio"
This reverts commitd9fd9cfef2
, reversing changes made to2dcf594fc6
.
This commit is contained in:
parent
07f331717f
commit
ba0d465e47
3 changed files with 14 additions and 81 deletions
|
@ -365,29 +365,9 @@ quint64 OwncloudPropagator::smallFileSize()
|
|||
return smallFileSize;
|
||||
}
|
||||
|
||||
void OwncloudPropagator::start(const SyncFileItemVector &items,
|
||||
const bool &hasChange,
|
||||
const int &lastChangeInstruction,
|
||||
const bool &hasDelete,
|
||||
const int &lastDeleteInstruction)
|
||||
void OwncloudPropagator::start(const SyncFileItemVector &items)
|
||||
{
|
||||
if (!hasChange && !hasDelete) {
|
||||
Q_ASSERT(std::is_sorted(items.begin(), items.end()));
|
||||
} else if (hasChange) {
|
||||
Q_ASSERT(std::is_sorted(items.begin(), items.end(),
|
||||
[](SyncFileItemVector::const_reference &a, SyncFileItemVector::const_reference &b) -> bool {
|
||||
return ((a->_instruction == CSYNC_INSTRUCTION_TYPE_CHANGE) && (b->_instruction != CSYNC_INSTRUCTION_TYPE_CHANGE));
|
||||
}));
|
||||
Q_ASSERT(std::is_sorted(items.begin(), items.begin() + lastChangeInstruction));
|
||||
|
||||
if (hasDelete) {
|
||||
Q_ASSERT(std::is_sorted(items.begin() + (lastChangeInstruction + 1), items.end(),
|
||||
[](SyncFileItemVector::const_reference &a, SyncFileItemVector::const_reference &b) -> bool {
|
||||
return ((a->_instruction == CSYNC_INSTRUCTION_REMOVE) && (b->_instruction != CSYNC_INSTRUCTION_REMOVE));
|
||||
}));
|
||||
Q_ASSERT(std::is_sorted(items.begin() + (lastChangeInstruction + 1), items.begin() + lastDeleteInstruction));
|
||||
}
|
||||
}
|
||||
|
||||
/* This builds all the jobs needed for the propagation.
|
||||
* Each directory is a PropagateDirectory job, which contains the files in it.
|
||||
|
|
|
@ -381,11 +381,7 @@ public:
|
|||
|
||||
~OwncloudPropagator();
|
||||
|
||||
void start(const SyncFileItemVector &_syncedItems,
|
||||
const bool &hasChange = false,
|
||||
const int &lastChangeInstruction = 0,
|
||||
const bool &hasDelete = false,
|
||||
const int &lastDeleteInstruction = 0);
|
||||
void start(const SyncFileItemVector &_syncedItems);
|
||||
|
||||
const SyncOptions &syncOptions() const;
|
||||
void setSyncOptions(const SyncOptions &syncOptions);
|
||||
|
|
|
@ -604,6 +604,7 @@ int SyncEngine::treewalkFile(csync_file_stat_t *file, csync_file_stat_t *other,
|
|||
dir = SyncFileItem::None;
|
||||
// For directories, metadata-only updates will be done after all their files are propagated.
|
||||
if (!isDirectory) {
|
||||
|
||||
// Update the database now already: New remote fileid or Etag or RemotePerm
|
||||
// Or for files that were detected as "resolved conflict".
|
||||
// Or a local inode/mtime change
|
||||
|
@ -1155,53 +1156,8 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
|
|||
}
|
||||
}
|
||||
|
||||
bool hasChange = false;
|
||||
bool hasDelete = false;
|
||||
int lastChangeInstruction = 0;
|
||||
int lastDeleteInstruction = 0;
|
||||
|
||||
// Only if list is populated, can be empty under certain circumstances
|
||||
// Get CHANGE instructions to the top first
|
||||
if (syncItems.count() > 0) {
|
||||
std::sort(syncItems.begin(), syncItems.end(),
|
||||
[](SyncFileItemVector::const_reference &a, SyncFileItemVector::const_reference &b) -> bool {
|
||||
return ((a->_instruction == CSYNC_INSTRUCTION_TYPE_CHANGE) && (b->_instruction != CSYNC_INSTRUCTION_TYPE_CHANGE));
|
||||
});
|
||||
if (syncItems.at(0)->_instruction == CSYNC_INSTRUCTION_TYPE_CHANGE) {
|
||||
hasChange = true;
|
||||
lastChangeInstruction = std::distance(syncItems.begin(), std::find_if(syncItems.begin(), syncItems.end(), [](SyncFileItemVector::const_reference &a) -> bool { return a->_instruction != CSYNC_INSTRUCTION_TYPE_CHANGE; }));
|
||||
}
|
||||
if (hasChange) {
|
||||
std::sort(syncItems.begin(), syncItems.begin() + lastChangeInstruction);
|
||||
if (syncItems.count() > lastChangeInstruction) {
|
||||
std::sort(syncItems.begin() + (lastChangeInstruction + 1), syncItems.end(),
|
||||
[](SyncFileItemVector::const_reference &a, SyncFileItemVector::const_reference &b) -> bool {
|
||||
return ((a->_instruction == CSYNC_INSTRUCTION_REMOVE) && (b->_instruction != CSYNC_INSTRUCTION_REMOVE));
|
||||
});
|
||||
if (syncItems.at(lastChangeInstruction + 1)->_instruction == CSYNC_INSTRUCTION_REMOVE) {
|
||||
hasDelete = true;
|
||||
lastDeleteInstruction = std::distance(syncItems.begin(), std::find_if(syncItems.begin() + (lastChangeInstruction + 1), syncItems.end(), [](SyncFileItemVector::const_reference &a) -> bool { return a->_instruction != CSYNC_INSTRUCTION_REMOVE; }));
|
||||
std::sort(syncItems.begin() + (lastChangeInstruction + 1), syncItems.begin() + lastDeleteInstruction);
|
||||
if (syncItems.count() > lastDeleteInstruction) {
|
||||
std::sort(syncItems.begin() + (lastDeleteInstruction + 1), syncItems.end());
|
||||
}
|
||||
} else {
|
||||
std::sort(syncItems.begin() + (lastChangeInstruction + 1), syncItems.end());
|
||||
}
|
||||
}
|
||||
} else if (syncItems.at(0)->_instruction == CSYNC_INSTRUCTION_REMOVE) {
|
||||
hasDelete = true;
|
||||
lastDeleteInstruction = std::distance(syncItems.begin(), std::find_if(syncItems.begin(), syncItems.end(), [](SyncFileItemVector::const_reference &a) -> bool { return a->_instruction != CSYNC_INSTRUCTION_REMOVE; }));
|
||||
std::sort(syncItems.begin(), syncItems.begin() + lastDeleteInstruction);
|
||||
if (syncItems.count() > lastDeleteInstruction) {
|
||||
std::sort(syncItems.begin() + (lastDeleteInstruction + 1), syncItems.end());
|
||||
}
|
||||
} else {
|
||||
// Sort items per destination
|
||||
std::sort(syncItems.begin(), syncItems.end());
|
||||
}
|
||||
}
|
||||
|
||||
//std::sort(syncItems.begin(), syncItems.end());
|
||||
|
||||
// make sure everything is allowed
|
||||
checkForPermission(syncItems);
|
||||
|
@ -1259,7 +1215,7 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult)
|
|||
if (_needsUpdate)
|
||||
emit(started());
|
||||
|
||||
_propagator->start(syncItems, hasChange, lastChangeInstruction, hasDelete, lastDeleteInstruction);
|
||||
_propagator->start(syncItems);
|
||||
|
||||
qCInfo(lcEngine) << "#### Post-Reconcile end #################################################### " << _stopWatch.addLapTime(QLatin1String("Post-Reconcile Finished")) << "ms";
|
||||
}
|
||||
|
@ -1399,7 +1355,8 @@ void SyncEngine::checkForPermission(SyncFileItemVector &syncItems)
|
|||
const QString path = (*it)->destination() + QLatin1Char('/');
|
||||
|
||||
// if reading the selective sync list from db failed, lets ignore all rather than nothing.
|
||||
if (!selectiveListOk || std::binary_search(selectiveSyncBlackList.constBegin(), selectiveSyncBlackList.constEnd(), path)) {
|
||||
if (!selectiveListOk || std::binary_search(selectiveSyncBlackList.constBegin(), selectiveSyncBlackList.constEnd(),
|
||||
path)) {
|
||||
(*it)->_instruction = CSYNC_INSTRUCTION_IGNORE;
|
||||
(*it)->_status = SyncFileItem::FileIgnored;
|
||||
(*it)->_errorString = tr("Ignored because of the \"choose what to sync\" blacklist");
|
||||
|
|
Loading…
Reference in a new issue