tagtime / TagTime

Stochastic Time Tracking for Space Cadets
http://tagti.me
Other
367 stars 51 forks source link

The Beeminder integration deletes all data from existing goals #46

Open bsoule opened 9 years ago

bsoule commented 9 years ago

There's a risk of catastrophic data loss if you use perl TagTime and hook up the Beeminder integration to an existing Beeminder goal that has non-TagTime-generated data. TagTime will replace all existing data for the goal to make it match your TagTime log. In other words, your TagTime log is the master copy and TagTime will keep Beeminder in sync with it, including deleting data that's not found in your TagTime log.

Proposed solution: give an "ignore data before" setting option so that the integration leaves older data alone, and only syncs data after the given date.

ianmcb commented 9 years ago

I've been meaning to explore how to add changing slug => tag definitions in the %beeminder hash. It would work with a subroutine, but perhaps could be also be done (more user-friendly with regards to setting it up) by allowing to pass a hash, indexed by starting date, containing the changing uploading rules. The earliest date in that hash could then also be the cut-off point for ignoring existing data on the web.

On Fri, Jul 17, 2015 at 9:55 AM, Bethany notifications@github.com wrote:

There's a risk of catastrophic data loss if you use perl TagTime and hook up the Beeminder integration to an existing Beeminder goal that has non-TagTime-generated data. TagTime will replace all existing data for the goal to make it match your TagTime log. In other words, your TagTime log is the master copy and TagTime will keep Beeminder in sync with it, including deleting data that's not found in your TagTime log.

Proposed solution: give an "ignore data before" setting option so that the integration leaves older data alone, and only syncs data after the given date.

— Reply to this email directly or view it on GitHub https://github.com/dreeves/TagTime/issues/46.

pmyteh commented 9 years ago

I've been doing some thinking this (which has bitten me a couple of times) and a meta version of it. In addition to allowing pre-existing data to coexist with a TagTime record, I believe two separate active data sources should be able to coexist on the same TT-enabled graph.

My use case is two separate computers, both running TagTime and either of which I may be sat in front of at the moment of ping, but it applies to any situation (like that in this Issue) where there is an ambition to be able to handle non-TT data, either input manually or by another automatic method.

Proposed solution: Add a configurable tag code to TagTime's Beeminder updates, and configure TT to only operate on those data points which contain the tag. This would automatically deal with issue #46 (as the pre-existing data would not have the code and would be left alone) and would make integration of multiple sources easier.

I started doing some pre-work on this in my code fork, but Real Life got in the way...