Provided by: taskwarrior_2.6.2+dfsg-1_amd64 bug


       task-sync  -  A  discussion  and  tutorial  for  the  various task(1) data synchronization


       Taskwarrior has several sync options, both external and built in.  If  you  wish  to  sync
       your  data,  choose one method only; mixing methods is going to lead to problems.  Each of
       the methods discussed have their own strengths.


       There are three alternatives for syncing data, which are:

       1) Version control systems, such as git, hg, svn
       2) File sharing systems, such as DropBox, Google Drive
       3) Using the Taskserver and the 'sync' command


       There are several good, distributed VCS systems (git, hg, ...) and centralized VCS systems
       (svn, cvs ...), and they all function in a similar fashion for our purposes.

       Setup  is  straightforward.   You  place your .task directory under revision control.  You
       then need to perform a regular commit/push/pull/update to  make  sure  that  the  data  is
       propagated  when  needed.   You  can  even  do this using shell scripts so that every task
       command is preceded by a 'pull' and followed by a 'push'.

         - Good data transport mechanisms
         - Secure transport options

         - You need proficiency with VCS tools
         - You will need to manually resolve conflicts frequently
         - You need to provide the mechanism for making sure copies are up to date


       There are many file sharing services, such as DropBox, Amazon S3, Google  Drive,  SkyDrive
       and  more.   This  technique  involves  storing your .task directory in a shared directory
       under the control of the file hosting services.

       Syncing happens quickly, although it is possible to  run  into  conflict  situations  when
       there  is  no  network connectivity, and the tasks are modified in two separate locations.
       This is because the file hosting service knows only about files, and it has no idea how to
       merge tasks.  Avoid this problem by never modifying the same task on two machines, without
       an intervening sync.

       Setup  simply  involves  creating  the  directory   and   modifying   your   data.location
       configuration variable like this:

           $ task config data.location /path/to/shared/directory

         - Good client support
         - Easy setup
         - Transparent use

         - Tasks are not properly merged


       The  Taskserver  was  designed  for  this  purpose  to be secure, fast and conflict- free,
       allowing data interchange between assorted Taskwarrior clients, and  tolerant  of  network
       connectivity problems.

       There  is  a  'sync'  command  built  in  to  Taskwarrior  (provided the GnuTLS library is
       installed), and with a server account and client configuration, syncing is done on demand.

       Setup is a matter of creating an account on a Taskserver (see your Taskserver provider  or
       operate your own - see

       Once you have an account, you'll receive a certificate, key, and credentials.  You'll need
       to put the certificate and key somewhere like this:

           $ cp <name>.cert.pem ~/.task
           $ cp <name>.key.pem ~/.task

       Then you configure Taskwarrior, using the provided details:

           $ task config taskd.certificate ~/.task/<name>.cert.pem
           $ task config taskd.key         ~/.task/<name>.key.pem
           $ task config taskd.credentials <organization>/<name>/<UUID>
           $ task config taskd.server      <server domain>:<port>

       If you are using a private server, you are likely also using  a  self-signed  certificate,
       which means you will need one of the following additional entries:

           $ task config          ~/.task/ca.cert.pem

       The CA (Certificate Authority) will be used to verify the server certificate.

       After setup, you run a one-time sync initialization, like this:

           $ task sync init

       This  will  make sure your client and the server are properly in sync to begin with.  From
       this point on, you never run the 'initialize' command again, just go about your  business,
       and when you want to sync, run this:

           $ task sync

       You'll  see  a summary of how many tasks were uploaded and downloaded.  You can safely run
       the command as often as you like.  When there are no changes to sync, nothing happens.  If
       you  do  not  have  connectivity,  your  task changes accumulate so that when you next run
       'sync' with proper connectivity, the changes are properly handled, in the right order.

       If you run multiple clients that sync to the same  server,  you  will  need  to  run  this
       command on your primary client (the one you use most often):

           $ task config recurrence on

       And on the other clients, run:

           $ task config recurrence off

       This protects you against the effects of a sync/duplication bug.

         - Secure communication
         - Minimal bandwidth
         - Tolerates connectivity outage

         - You need to manage your own server, or gain access to a hosted server.


       Copyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez.

       Taskwarrior       is       distributed      under      the      MIT      license.      See for more information.


       task(1), taskrc(5), task-color(5),

       For more information regarding Taskwarrior, see the following:

       The official site at

       The official code repository at

       You can contact the project by emailing


       Bugs in Taskwarrior may be reported to the issue-tracker at