💻 Desktop sync client for Nextcloud
Find a file
Jocelyn Turcotte e974771796 csync: Use an explicit instruction for should_update_metadata
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.
2016-08-17 15:39:31 +02:00
admin [tx-robot] updated from transifex 2016-08-11 01:16:34 +02:00
binary@1cfb331dc9 binaries: Update to build 42 owncloud/client#4977 2016-06-27 15:30:03 +02:00
cmake NSIS: Properly uninstall both x64 and x86 DLLs #4762 2016-05-03 18:35:01 +02:00
csync csync: Use an explicit instruction for should_update_metadata 2016-08-17 15:39:31 +02:00
doc conffile.rst #5052 2016-07-12 14:29:05 +02:00
resources Added temporar icon for notifications. 2016-03-10 17:22:36 +01:00
shell_integration fix #5015 overlay icon not show: compare folder paths with no case-sensitivity 2016-07-01 13:03:42 +08:00
src csync: Use an explicit instruction for should_update_metadata 2016-08-17 15:39:31 +02:00
test Make sure that we invalidate parents on blacklisted items 2016-08-17 15:39:30 +02:00
theme Run optipng on existing non-mono state icons 2015-09-11 13:45:57 +02:00
translations [tx-robot] updated from transifex 2016-07-10 02:18:47 -04:00
.gitattributes git: fix entry in .gitattributes to not export binary dir. 2014-09-22 11:24:24 +02:00
.gitignore Add Dockerfile that allows cross compiling the client 2016-02-05 12:17:31 +01:00
.gitmodules Submodule: Use https path 2016-03-15 11:55:28 +01:00
.tag Export repo revision indicator 2012-10-12 14:44:21 +02:00
.travis.yml Travis coverity: Enforce Ubuntu 14.04 env, fix repo 2016-05-24 11:30:03 +02:00
ChangeLog Update changelog for 2.2.1 2016-05-30 17:19:40 +02:00
client.qrc Added temporar icon for notifications. 2016-03-10 17:22:36 +01:00
CMakeLists.txt Merge remote-tracking branch '2.1' into 2.2 2016-05-25 16:23:58 +02:00
config.h.in Add TestSyncEngine and TestSyncFileStatusTracker auto tests 2016-08-17 15:39:30 +02:00
CONTRIBUTING.md Minor build etc typos 2015-09-10 13:20:11 +05:45
COPYING Correct COPYING file from FSF website, rpmlint found an old address 2011-11-22 22:45:14 +01:00
COPYING.documentation Add doc cmake targets (HTML, PDF, QtHelp, CHM, man) 2012-11-25 00:38:47 +01:00
CPackOptions.cmake.in Mirall -> (Desktop) Client 2014-12-08 17:54:32 +01:00
issue_template.md issue_template.md: Clarifying comment 2016-08-10 14:44:19 +02:00
Jenkinsfile Jenkinsfile: Add win32 build (#5091) 2016-08-09 15:06:17 +02:00
mirall.desktop.in [tx-robot] updated from transifex 2016-07-12 02:18:39 -04:00
OWNCLOUD.cmake Minor build etc typos 2015-09-10 13:20:11 +05:45
OwnCloudCPack.cmake CPack: Use APPLICATION_SHORTNAME rather than APPLICATION_NAME 2015-07-16 14:38:59 +02:00
README.md Fix link to the binary packages in README.md 2016-06-02 14:55:48 +02:00
sync-exclude.lst Exclude: .Trash-* trash folders #4600 2016-04-14 18:27:33 +02:00
theme.qrc Add changes theme.qrc 2015-09-11 15:31:56 +02:00
VERSION.cmake This branch is headed towards 2.2.3 now 2016-06-20 17:42:19 +02:00

ownCloud Desktop Client

Job State
client-build-matrix Build Status
client-test-matrix-linux-no-build Build Status
coverity_scan Build Status

Introduction

The ownCloud Desktop Client is a tool to synchronize files from ownCloud Server with your computer.

Download

Binary packages

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:

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.