Skip to content


Subversion checkout URL

You can clone with
Download ZIP


Enhancement: 3-way merge / multi-source sync #265

TaoK opened this Issue · 1 comment

2 participants


The current sync mechanism entails either frequent synching at all sync points (file on dropbox folder constantly synched, and todo.txt-touch synching to/from drop-box before and after every update made in the mobile app).

Offline sync exists, but does not involve any "merging" of changes, so if changes are made in multiple places, changes will be lost from one or the other place, and the user may not even be aware of the data loss.

Issue 262 (#262) proposes to minimise the impact of these synchronization conflicts, by automatically selecting the correct source in case of one-sided changes, and alerting the user in case of changes at both ends.

This issue proposes to take this a step further, and routinely do a 3-way merge on every sync, ensuring that offline work is "safe" most or all of the time, and providing a conflict resolution UI for the specific cases/times where multiple conflicting edits have been made to the same task, or to the sorting of tasks.

A generic synchronization algorithm/approach should be equally applicable to dropbox as to other potential task storage providers, and should be implementable for any todo.txt client/environment, not limited to the todo.txt-touch android app.

Relevant conversations on the mailing list can be found by searching for the conversation subject headers:

Some portion of this functionality may already be implemented in the google tasks storage mechanism mentioned here: #210

(maybe more to be added here)


2013 Issue Tracker cleanup: 3-way merge / multi-source sync is a great idea, but it's just a bigger project than the core team can take on at the moment. Because we're thin on resources, for now we're focusing on refining the user experience syncing to Dropbox only.

Adding multiple cloud providers to the app is a difficult UI problem and would introduce a lot more code to maintain, so I'm going to close this ticket in order to focus on smaller improvements we can make to the current single-provider functionality.

Of course I'd certainly consider accepting a pull request, though! Thanks for your interest in the project.

@ginatrapani ginatrapani closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.