- Removed the \n characters from Task::composeFF4 and Task::ComposeJSON.
- Tasks in backlog.data file are now written as JSON.
- Tasks are recognized in FF4 or JSON format.
- Many files were missing an explicit cmake.h include. Some were not including
it at all. Now it's used almost everywhere.
(cherry picked from commit 82ae86979c497e6d1d0c6b2b5a55aa379ec82c98)
Hopefully found the ultimate cause of duplicated (completed) tasks.
The corresponding test case
1. does not rely on the fact that there are modifications with equal
timestamps and
2. is a LOT simpler than the other ones.
Fixed some other merge issues with the sorting order of equally timestamped
entries in undo.data (see #1104).
1. The fact that both files can begin with equal timestamps but different
modifications has not been taken into account.
2. Besides the fact that the relative order within the same data file must
be preservered as introduced before, we also need a unique order for entries
of different data files so that each machine comes to the same merge result.
This has now been achieved by taking the UUIDs into account as soon as the
timestamps are equal.
- Added an option to bypass backlog recording to TDB2::add and TDB2::modify.
This is required when handling backlog data, to prevent perpetual syncing.
Fixed the bug where the sort order of transactions with equal timestamps
was not stable, i.e. due to the lack of a total order, different merges
produced different sortings and hence messed up transactions which
have already been merged.
Added unit test.
Implemented a quick fix for the issue with a broken branch-off algorithm
which disregarded the transaction boundaries in the undo.data file.
Added unit test.
Implemented a quick fix for the issue with a broken branch-off algorithm
which disregarded the transaction boundaries in the undo.data file.
- Fixed bug #1022, where dependencies were note released when a blocking task
was completed (thanks to Arkady Grudzinsky).
- The Task object now caches ::is_blocked and ::is_blocking Booleans that are
determined on pending.data load.
- Simplified and sped up color rule processing using cached values, reducing
the number of map lookups, and removed loop invariants when the rules are
not defined.
- Simplified urgency calculations given the cached values for blocked/blocking.
- On load, pending.data is scanned for accurate blocked/blocking status
determination.
- Obsoleted and removed complex single-task dependency calculations.
- Sped up 'nag' processing by using cached values..
- Modified the 'show' command to consider color.blocking to be valid.
- Added default config value for color.blocking, and included it in the
precedence list ahead of blocked, as it is more important.
- Updated taskrc.5 man page to include the new color.blocking rule, and its
place in the rule precedence.
- Fixed bug #1023, which applied default.project and default.priority during
modification (thanks to Christoph Lange).
- Added unit tests.
- Added Christoph to the AUTHORS file.
- Added std::string::reserve in high-use locations.
- Used Task::get_date over Task::get where possible.
- Added missing code (bug) for waking up any completed tasks that are freshly
waited.
- Greater use of STL methods for bulk copying.
- Corrected performance measurement. The TDB2::gc requires data to
be loaded first, but load time is measured separately. This resulted
in repeat counting. Now the gc time subtracts any load time that is
accumulated *during* the gc. This is now a fair accounting of the time.
- Removed backlog file processing, which slows down processing. When
2.1 has taskd support, the backlog will be cleared, but until then there
is no point in accumulating transactions.