# HG changeset patch # User Olaf Wintermann # Date 1529835492 -7200 # Node ID 1607450065baeb4b054d77555fcbe047be9b43dd # Parent b50ade8e7197d3f38d027559f5a327c355be9477 this could be the 1.2 release diff -r b50ade8e7197 -r 1607450065ba CHANGELOG --- a/CHANGELOG Sun Jun 24 11:51:07 2018 +0200 +++ b/CHANGELOG Sun Jun 24 12:18:12 2018 +0200 @@ -1,6 +1,32 @@ Changelog ========= +version 1.2.0 (2018-06-24) +-------------------------- + + - added support for xml properties + - added dav get option to keep existing files + - added config option to disable some commands in dav-sync for specific syncdirs + - added dav import/export commands + - added authprompt to copy/move commands + - added remove-repository and repository-url commands + - added support for file tags in dav-sync + - added full macos support + - added support for utf8 file names on windows + - improved error messages + - improved code quality + - fixed that dav was fundamentally broken on some platforms because of a vaarg misuse + - fixed that dav-sync could not overwrite files on windows + - fixed bsd config + - fixed wrong path output in get command + - fixed infinite loop when trying to overwrite a collection with a regular file + - fixed segfault in put command, when encryption is requsted but no key is specified + +version 1.1.1 (2017-12-12) +-------------------------- + + - fixed dav get and list with -R option on windows (and possibly other platforms) + version 1.1.0 (2017-10-07) -------------------------- diff -r b50ade8e7197 -r 1607450065ba README --- a/README Sun Jun 24 11:51:07 2018 +0200 +++ b/README Sun Jun 24 12:18:12 2018 +0200 @@ -68,7 +68,7 @@ License ------- -Copyright 2017 Olaf Wintermann. All rights reserved. +Copyright 2018 Olaf Wintermann. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff -r b50ade8e7197 -r 1607450065ba bsd.mk --- a/bsd.mk Sun Jun 24 11:51:07 2018 +0200 +++ b/bsd.mk Sun Jun 24 12:18:12 2018 +0200 @@ -31,7 +31,7 @@ AR = ar RM = rm -CFLAGS = -g -c -D_FILE_OFFSET_BITS=64 +CFLAGS = -O2 -c -D_FILE_OFFSET_BITS=64 COFLAGS = -o LDFLAGS = LOFLAGS = -o diff -r b50ade8e7197 -r 1607450065ba clang.mk --- a/clang.mk Sun Jun 24 11:51:07 2018 +0200 +++ b/clang.mk Sun Jun 24 12:18:12 2018 +0200 @@ -31,7 +31,7 @@ AR = ar RM = rm -CFLAGS = -g -c -D_FILE_OFFSET_BITS=64 +CFLAGS = -O2 -c -D_FILE_OFFSET_BITS=64 COFLAGS = -o LDFLAGS = LOFLAGS = -o diff -r b50ade8e7197 -r 1607450065ba dav/version.h --- a/dav/version.h Sun Jun 24 11:51:07 2018 +0200 +++ b/dav/version.h Sun Jun 24 12:18:12 2018 +0200 @@ -27,6 +27,6 @@ */ #ifndef DAV_VERSION -#define DAV_VERSION "1.2 RC4" +#define DAV_VERSION "1.2" #endif diff -r b50ade8e7197 -r 1607450065ba docs/html/add-directory.html --- a/docs/html/add-directory.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/add-directory.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/add-repository.html --- a/docs/html/add-repository.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/add-repository.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/add-tag.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/add-tag.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,86 @@ + + + + + + + dav-sync add-tag + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav-sync add-tag [-s <syncdir>] <file> <tag>

    +

    Adds a tag to a SyncDirectory file. The file argument must be a normal file path. If multiple SyncDirectories contain this file, the SyncDirectory must be specified with the -s option.

    +

    Tags must be enabled for the SyncDirectory. See Configuration for details.

    +

    -s <syncdir> SyncDirectory for this file

    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/archive.html --- a/docs/html/archive.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/archive.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -69,12 +76,13 @@ -

    dav-sync archive [-cld] <directory>

    +

    dav-sync archive [-cld] [-t <tags>] <directory>

    Uploads all new and modified files to the server. The command is similar to the push command, however it does not delete files on the server.

    If conflict detection is not disabled, all files that are also modified on the server will be skipped.

    -c Disable conflict detection. This always overwrites files on the server

    -l Lock the repository before accessing it. After archive completed, the repository is unlocked

    -d Don't lock the repository (default)

    +

    -t <tags> Only sync files that match the tag filter expression

    diff -r b50ade8e7197 -r 1607450065ba docs/html/check-config.html --- a/docs/html/check-config.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/check-config.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/check-repositories.html --- a/docs/html/check-repositories.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/check-repositories.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/commands.html --- a/docs/html/commands.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/commands.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/configuration.html --- a/docs/html/configuration.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/configuration.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/copy.html --- a/docs/html/copy.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/copy.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -73,7 +80,7 @@

    Creates a duplicate of the resource identified by url1 at the location url2. All resource properties are copied. Currently url1 and url2 must be the same host.

    If url1 is a collection, all children are copied.

    If url2 already exists, the command aborts, unless the -O option is specified.

    -

    The command uses a single WebDAV COPY request to duplicate the resources. You may use file name and path decryption to copy and encrypted resource. Please note that the copy will always be located at url2, so the top most collection name will not be disguised. See encryption for more details on how encryption works.

    +

    The command uses a single WebDAV COPY request to duplicate the resources. You may use file name and path decryption to copy an encrypted resource. Please note that the copy will always be located at url2, so the top most collection name will not be disguised. See encryption for more details on how encryption works.

    -p disable file name and path decryption for url1

    -c enable file name and path decryption for url1

    -O overwrite the destination resource

    diff -r b50ade8e7197 -r 1607450065ba docs/html/date.html --- a/docs/html/date.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/date.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/delete-conflicts.html --- a/docs/html/delete-conflicts.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/delete-conflicts.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/empty-trash.html --- a/docs/html/empty-trash.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/empty-trash.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/encryption.html --- a/docs/html/encryption.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/encryption.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/export.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/export.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,92 @@ + + + + + + + dav export + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav export [-pc] [-o <file>] [-u <date>] <url>

    +

    Downloads a resource or a collection with all child resources, and writes the contents to an archive file. The Output is written to stdout, unless the -o option is used.

    +

    Currently the only available archive format is the ustar format.

    +

    These archive files can be uploaded to an collection with the dav import command.

    +

    -p disable file name and content decryption. You get exactly what is stored on the server.

    +

    -c enable file name and content decryption

    +

    -o <file> specify the local output file. A - indicates stdout

    +

    -u <date> download only files which are modified since the specified date. Uses the HTTP date format

    +

    Example: create tar file from collection

    +
    $ dav export -o collection.tar myserv/col/
    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/get-property.html --- a/docs/html/get-property.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/get-property.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -69,8 +76,10 @@ -

    dav get-property [-pc] [-n <uri>] <url> <property>

    +

    dav get-property [-pcx] [-n <uri>] <url> <property>

    Gets a specific resource property. Every WebDAV property has a name and an XML namespace. A namespace can be specified with the -n option or with a prefixed name. The prefix and property name are separated by a : as usual.

    +

    If the -x option is specified, a valid xml document containing the value is printed on stdout.

    +

    If the property contains xml data and the -x option is not specified, the value is printed on stderr in an xml-like format.

    Example: D:creationdate

    D is the prefix, creationdate is the name.

    There are only two available prefixes by default:

    @@ -82,8 +91,13 @@

    If the property name has no prefix, and no namespace is specified, the default namespace DAV: is used.

    -p disable file name and path decryption if enabled

    -c enable file name and path decryption

    +

    -x prints property as xml

    -n <uri> specify property namespace

    Note: Properties are never encrypted.

    +

    Example: xml property

    +
    $ dav get-property -x myserv/collection/ resourcetype
    +<?xml version="1.0"?>
    +<x0:resourcetype xmlns:x0="DAV:"><x0:collection /></x0:resourcetype>
    diff -r b50ade8e7197 -r 1607450065ba docs/html/get.html --- a/docs/html/get.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/get.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -69,11 +76,12 @@ -

    dav get [-pcR] [-o <file>] [-u <date>] <url>

    +

    dav get [-pcRK] [-o <file>] [-u <date>] <url>

    Downloads a resource. This command also downloads collections and its child resources when the -R option is used. When downloading a single resource, the default local file name is the resource name. When downloading collections, it does not create a local directory with the collection's name and places its children in there, but it downloads the children directly to the current working directory.

    -p disable file name and content decryption. You get exactly what is stored on the server.

    -c enable file name and content decryption

    -R download a collection

    +

    -K download only files that don't exist locally

    -o <file> specify the local output file. A - indicates stdout

    -u <date> download only files which are modified since the specified date. Uses the HTTP date format

    diff -r b50ade8e7197 -r 1607450065ba docs/html/getting-started.html --- a/docs/html/getting-started.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/getting-started.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/import.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/import.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,101 @@ + + + + + + + dav import + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav import [-pc] [-k <key>] [-L <lock>] <url> <file>

    +

    Uploads the content of an archive file to a collection. If the url points to a non-existing collection, the collection is created.

    +

    Currently the only available archive format is the ustar format. You can use tools like tar or the dav export command to create such archives.

    +

    -p disable file name encryption and decryption

    +

    -c enable file name and content encryption

    +

    -R upload directory

    +

    -k <key> use the specified key for encryption. The key must be configured in the config.xml file

    +

    -L <lock> use a lock token. See dav lock

    +

    Example: create tar archive with GNU tar and import it to a collection

    +
    $ tar cvf archive.tar --format=ustar mydir
    +mydir/
    +mydir/file.txt
    +mydir/otherfile
    +mydir/newfile
    +$ dav import myserv/col/ archive.tar
    +mkcol: mydir/
    +mydir: SRC/file.txt
    +mydir: SRC/otherfile
    +mydir: SRC/newfile
    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/index.html --- a/docs/html/index.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/index.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,13 +26,17 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • +
  • remove-property
  • lock
  • unlock
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -48,10 +52,15 @@ @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/introduction.html --- a/docs/html/introduction.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/introduction.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/list-directories.html --- a/docs/html/list-directories.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/list-directories.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/list-repositories.html --- a/docs/html/list-repositories.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/list-repositories.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/list-tags.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/list-tags.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,86 @@ + + + + + + + dav-sync add-tag + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav-sync list-tags [-s <syncdir>] <file>

    +

    Lists all file tags.

    +

    Tags must be enabled for the SyncDirectory. See Configuration for details.

    +

    -s <syncdir> SyncDirectory for this file

    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/list.html --- a/docs/html/list.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/list.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/lock.html --- a/docs/html/lock.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/lock.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/mkdir.html --- a/docs/html/mkdir.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/mkdir.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/move.html --- a/docs/html/move.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/move.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -72,7 +79,7 @@

    dav move [-pcO] [-L <lock>] <url> <url>

    Moves the resource identified by url1 to the location url2. Currently url1 and url2 must be on the same host.

    If url2 already exists, the command aborts, unless the -O option is specified.

    -

    The command uses a single WebDAV MOVE request to move the resources. You may use file name and path decryption to copy and encrypted resource. Please note that the target location will be exactly url2, so the top most collection name will not be disguised. See [encryption][2] for more details on how encryption works.

    +

    The command uses a single WebDAV MOVE request to move the resources. You may use file name and path decryption to copy an encrypted resource. Please note that the target location will be exactly url2, so the top most collection name will not be disguised. See [encryption][2] for more details on how encryption works.

    -p disable file name and path decryption for url1

    -c enable file name and path decryption for url1

    -O overwrite the destination resource

    diff -r b50ade8e7197 -r 1607450065ba docs/html/pull.html --- a/docs/html/pull.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/pull.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -69,13 +76,15 @@ -

    dav-sync pull [-cld] <directory>

    +

    dav-sync pull [-cldr] [-t <tags>] <directory>

    Pulls all changes from the server. All new or modified files are downloaded and all files deleted on the server are deleted locally. If a file is also locally modified and conflict detection is not disabled, the local file is renamed and an entry in the conflict database is added.

    When a trash directory is configured for the SyncDirectory, all files that would be deleted are instead moved to the trash directory.

    When backup-on-pull is enabled for the SyncDirectory, all files that would be overwritten are also moved to the trash.

    -c Disable conflict detection. This always overwrites locally modified files

    -l Lock the repository before accessing it. After pull completed, the repository is unlocked

    -d Don't lock the repository (default)

    +

    -t <tags> Only sync files that match the tag filter expression

    +

    -r Delete files not matching the tag filter

    diff -r b50ade8e7197 -r 1607450065ba docs/html/push.html --- a/docs/html/push.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/push.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -69,12 +76,14 @@ -

    dav-sync push [-cld] <directory>

    +

    dav-sync push [-cldr] [-t <tags>] <directory>

    Pushes all local changes to the server. This uploads all locally modified files and deletes all locally deleted files on the server.

    If conflict detection is not disabled, all files that are also modified on the server will be skipped.

    -c Disable conflict detection. This always overwrites files on the server

    -l Lock the repository before accessing it. After push completed, the repository is unlocked

    -d Don't lock the repository (default)

    +

    -t <tags> Only sync files that match the tag filter expression

    +

    -r Remove resources not matching the tag filter

    diff -r b50ade8e7197 -r 1607450065ba docs/html/put.html --- a/docs/html/put.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/put.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/remove-property.html --- a/docs/html/remove-property.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/remove-property.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/remove-repository.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/remove-repository.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,85 @@ + + + + + + + dav remove-repository + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav remove-repository <reponame>

    +

    This command removes a repository from the config.xml file.

    +

    Command alias: remove-repo, rm-repo

    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/remove-tag.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/remove-tag.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,86 @@ + + + + + + + dav-sync add-tag + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav-sync remove-tag [-s <syncdir>] <file> <tag>

    +

    Removes a tag from a SyncDirectory file.

    +

    Tags must be enabled for the SyncDirectory. See Configuration for details.

    +

    -s <syncdir> SyncDirectory for this file

    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/remove.html --- a/docs/html/remove.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/remove.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/resolve-conflicts.html --- a/docs/html/resolve-conflicts.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/resolve-conflicts.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/set-property.html --- a/docs/html/set-property.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/set-property.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -72,9 +79,11 @@

    dav set-property [-pc] [-L <lock>] [-n <uri>] <url> <property> [value]

    Sets a resource property to the specified value.

    property is a property name with or without prefix (see get-property for details).

    +

    To store an xml value, use the -x option. The specified value must be a valid xml document. All nodes below the root element are stored as the property value.

    If no value is specified, the content for the property is read from stdin.

    -p disable file name and path decryption if enabled

    -c enable file name and path decryption

    +

    -x store an xml value

    -L <lock> use a lock token. See dav lock

    -n <uri> specify property namespace

    Note: Properties are never encrypted.

    diff -r b50ade8e7197 -r 1607450065ba docs/html/set-tags.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/set-tags.html Sun Jun 24 12:18:12 2018 +0200 @@ -0,0 +1,87 @@ + + + + + + + dav-sync add-tag + + + + +
    + DavUtils documentation +
    + + + +
    + +

    dav-sync set-tags [-s <syncdir>] <file> [tags]

    +

    Sets all tags for a SyncDirectory file. The file argument must be a normal file path. If multiple SyncDirectories contain this file, the SyncDirectory must be specified with the -s option.

    +

    If no tags are specified, all tags are removed from this file.

    +

    Tags must be enabled for the SyncDirectory. See Configuration for details.

    +

    -s <syncdir> SyncDirectory for this file

    +
    + + + diff -r b50ade8e7197 -r 1607450065ba docs/html/sync-check-config.html --- a/docs/html/sync-check-config.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/sync-check-config.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/sync-commands.html --- a/docs/html/sync-commands.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/sync-commands.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/sync-configuration.html --- a/docs/html/sync-configuration.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/sync-configuration.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • @@ -127,10 +134,35 @@

    Type: integer
    Default: 0
    Example: <lock-timeout>50</lock-timeout>

    +

    tagconfig

    +

    Configures the local store for resource tags. If this element is specified, resource tags are stored locally.

    +

    Optional elements: local-store, detect-changes, xattr-name, on-conflict

    +

    local-store

    +

    Specifies the tag-store type. Currently the only available type is xattr.

    +

    The element can contain the attribute format with one of the following values: text, csv, xml, macos. The default value is text.

    +

    Type: tagstore type enum
    +Default: xattr
    +Example: <local-store format="csv">xattr</local-store>

    +

    xattr-name

    +

    Specifies the name of the extended attribute for storing tags. The default value is tags, unless you are using the macos format, where the default value is com.apple.metadata:_kMDItemUserTags.

    +

    Type: string
    +Default: tags
    +Example: `file_tags

    +

    detect-changes

    +

    Controls, if tag changes should be detected.

    +

    Type: boolean
    +Default: false
    +Example: <detect-changes>true</detect-changes>

    +

    on-conflict

    +

    Specifies the behavior, when tag conflicts occur. Possible values are: no_conflict, keep_local, keep_remote, merge

    +

    Type: onconflict enum
    +Default: no_conflict
    +Example: <on-conflict>merge</on-conflict>

    filter

    -

    With the filter element, include and exclude filters can be specified, to control which files are synchronized. The pull and push command apply these filters to file paths. At first it is checked if a file is matching any include filter. If so only files matching not an exclude filter are further processed.

    +

    With the filter element, include and exclude filters can be specified, to control which files are synchronized. The pull, push and archive command apply these filters to file paths. At first it is checked if a file is matching any include filter. If so only files matching not an exclude filter are further processed.

    +

    It is also possible to filter resources by tags. Tags can dynamically be applied to individual files. The tag filter elements contains a tag filter expression. Only files that match the filter expression are synchronized.

    Note: The file path is relative to the directory path (and WebDAV collection) but always starts with an path separator.

    -

    Optional elements: <include>, <exclude>

    +

    Optional elements: <include>, <exclude>, <tags>

    include

    Controls which files will be included by pull and push. If an include filter is specified, only files matching this filter are included.

    Type: regex string
    @@ -147,6 +179,18 @@ <exclude>^/secretdir</exclude> <exclude>\.DS_Store$</exclude> </filter> +

    tags

    +

    Filters resources by tags. Only resources, that are not a collection, are effected. If tags are not stored locally, the pull command still uses the filter.

    +

    Filter Syntax:

    +
    filter ::= operator? , (tag_list | ("(" , filter , ")")+)
    +tag_list ::= tag , ("," tag)*
    +operator ::= "&" | "|" | "1" | "0"
    +

    Type: tag filter expression
    +Example:

    +
    <filter>
    +    <!-- sync only resources that have one of this tags -->
    +    <tags>| (tag1, tag2, tag3)</tags>
    +</filter>
    diff -r b50ade8e7197 -r 1607450065ba docs/html/trash-info.html --- a/docs/html/trash-info.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/trash-info.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba docs/html/unlock.html --- a/docs/html/unlock.html Sun Jun 24 11:51:07 2018 +0200 +++ b/docs/html/unlock.html Sun Jun 24 12:18:12 2018 +0200 @@ -26,6 +26,8 @@
  • remove
  • copy
  • move
  • +
  • export
  • +
  • import
  • get-property
  • set-property
  • remove-property
  • @@ -34,6 +36,7 @@
  • info
  • date
  • add-repository
  • +
  • remove-repository
  • list-repositories
  • check-config
  • @@ -54,6 +57,10 @@
  • delete-conflicts
  • trash-info
  • empty-trash
  • +
  • add-tag
  • +
  • remove-tag
  • +
  • set-tags
  • +
  • list-tags
  • add-directory
  • list-directories
  • check-config
  • diff -r b50ade8e7197 -r 1607450065ba gcc.mk --- a/gcc.mk Sun Jun 24 11:51:07 2018 +0200 +++ b/gcc.mk Sun Jun 24 12:18:12 2018 +0200 @@ -31,7 +31,7 @@ AR = ar RM = rm -CFLAGS = -std=gnu99 -g -c -D_FILE_OFFSET_BITS=64 +CFLAGS = -std=gnu99 -O2 -c -D_FILE_OFFSET_BITS=64 COFLAGS = -o LDFLAGS = LOFLAGS = -o diff -r b50ade8e7197 -r 1607450065ba mingw.mk --- a/mingw.mk Sun Jun 24 11:51:07 2018 +0200 +++ b/mingw.mk Sun Jun 24 12:18:12 2018 +0200 @@ -31,7 +31,7 @@ AR = ar RM = rm -CFLAGS = -std=gnu99 -g -c +CFLAGS = -std=gnu99 -O2 -c COFLAGS = -o LDFLAGS = LOFLAGS = -o diff -r b50ade8e7197 -r 1607450065ba osx.mk --- a/osx.mk Sun Jun 24 11:51:07 2018 +0200 +++ b/osx.mk Sun Jun 24 12:18:12 2018 +0200 @@ -31,7 +31,7 @@ AR = ar RM = rm -CFLAGS = -g -c -Wno-deprecated -Wno-format +CFLAGS = -O2 -c -Wno-deprecated -Wno-format COFLAGS = -o LDFLAGS = LOFLAGS = -o diff -r b50ade8e7197 -r 1607450065ba suncc.mk --- a/suncc.mk Sun Jun 24 11:51:07 2018 +0200 +++ b/suncc.mk Sun Jun 24 12:18:12 2018 +0200 @@ -31,7 +31,7 @@ AR = ar RM = rm -CFLAGS = -g -c -xc99 -D_FILE_OFFSET_BITS=64 +CFLAGS = -O2 -c -xc99 -D_FILE_OFFSET_BITS=64 COFLAGS = -o LDFLAGS = -lmd -lm LOFLAGS = -o