e974771796
The current way of tracking the need to update the metadata without propagation using a separate flag makes it difficult to track priorities between the local and remote tree. The logic is also difficult to logically cover since the possibilities matrix isn't 100% covered, leaving the flag only used in a few situations (mostly involving folders, but not only). The reason we need to change this is to be able to track the sync state of files for overlay icons. The instruction alone can't be used since CSYNC_INSTRUCTION_SYNC is used for folders even though they won't be propagated. Removing this logic is however not possible without using something else than CSYNC_INSTRUCTION_NONE since too many codepath interpret (rightfully) this as meaning "nothing to do". This patch adds a new CSYNC_INSTRUCTION_UPDATE_METADATA instruction to let the update and reconcile steps tell the SyncEngine to update the metadata of a file without any propagation. Other flags are left to be interpretted by the implementation as implicitly needing metadata update or not, as this was already the case for most file propagation jobs. For example, CSYNC_INSTRUCTION_NEW for directories now also implicitly update the metadata. Since it's not impossible for folders to emit CSYNC_INSTRUCTION_SYNC or CSYNC_INSTRUCTION_CONFLICT, the corresponding code paths in the sync engine have been removed. Since the reconcile step can now know if the local tree needs metadata update while the remote side might want propagation, the localMetadataUpdate logic in SyncEngine::treewalkFile now simply use a CSYNC_INSTRUCTION_UPDATE_METADATA for the local side, which is now implemented as a different database query. |
||
---|---|---|
admin | ||
binary@1cfb331dc9 | ||
cmake | ||
csync | ||
doc | ||
resources | ||
shell_integration | ||
src | ||
test | ||
theme | ||
translations | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.tag | ||
.travis.yml | ||
ChangeLog | ||
client.qrc | ||
CMakeLists.txt | ||
config.h.in | ||
CONTRIBUTING.md | ||
COPYING | ||
COPYING.documentation | ||
CPackOptions.cmake.in | ||
issue_template.md | ||
Jenkinsfile | ||
mirall.desktop.in | ||
OWNCLOUD.cmake | ||
OwnCloudCPack.cmake | ||
README.md | ||
sync-exclude.lst | ||
theme.qrc | ||
VERSION.cmake |
ownCloud Desktop Client
Job | State |
---|---|
client-build-matrix | |
client-test-matrix-linux-no-build | |
coverity_scan |
Introduction
The ownCloud Desktop Client is a tool to synchronize files from ownCloud Server with your computer.
Download
Binary packages
- Refer to the download page https://owncloud.org/install/#install-clients
Source code
The ownCloud Desktop Client is developed in Git. Since Git makes it easy to fork and improve the source code and to adapt it to your need, many copies can be found on the Internet, in particular on GitHub. However, the authoritative repository maintained by the developers is located at https://github.com/owncloud/client.
Building the source code
Building the Client in the ownCloud Desktop Client manual.
Maintainers and Contributors
The maintainers of this repository are:
- Klaas Freitag freitag@owncloud.com
- Daniel Molkentin danimo@owncloud.com
- Markus Goetz guruz@owncloud.com
- Olivier Goffart ogoffart@owncloud.com
ownCloud Desktop Client is developed by the ownCloud community and receives patches from a variety of authors.
Reporting issues and contributing
If you find any bugs or have any suggestion for improvement, please file an issue at https://github.com/owncloud/client/issues. Do not contact the authors directly by mail, as this increases the chance of your report being lost.
If you created a patch, please submit a Pull Request. For non-trivial patches, we need you to sign the Contributor Agreement before we can accept your patch.
If you want to contact us, e.g. before starting a more complex feature, you can join us at #owncloud-client-dev.
License
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.