-
-
Notifications
You must be signed in to change notification settings - Fork 91
Time Tracking
Documentation in progress.
Doing entries always have a start date, and --- unless you specify otherwise --- when you mark an entry as @done, the @done tag gets a date value. Doing can then calculate the interval between start and finish to show how long you spent on any given entry.
All of the display commands (show, view, etc.) have a template option to show %interval
in the output. When this is present, any entry listed that has a non-zero interval will display its elapsed time.
You can also use the --totals
option with various commands to total up times based on @tags. The output will show the total time recorded for all items containing each tag. Times are listed in DD:HH:MM.
For example, if you'd been adding entries as you worked last week and wanted to see where you spent your time during the work week, you could run doing show --from "mon to fri" --times --totals
. The output would include a block at the end like this:
--- Tag Totals ---
bunch: 00:00:33
coding: 00:06:58
communication: 00:00:24
contentcreation: 00:01:05
design: 00:00:44
doing: 00:02:34
meetings: 00:03:42
wiki: 00:00:25
writing: 00:01:13
I use local config files to automatically tag projects and activities based on what directory I'm running Doing from, so this gives me a pretty good idea where I've been.
You can use --no-date
with tag/finish/done to avoid adding a timestamp to the @done tag. This means that in time totals reports the entry will show no elapsed interval. When you use doing cancel
, it adds a dateless @done.
If you have occasion to frequently create entries that should not be timed, you can use the never_time
config setting to prevent a date from being included with the @done
tag based on section or tags. This will prevent any time interval from being recorded for the entry. In your ~/.doingrc
file, include an array of tags or sections which should never be timed. Tags should begin with @
, anything without an @
will be assumed to be a section.
never_time: [@idea, @reminder, Ideas]
With the above config, any entry tagged "@idea" or "@reminder", or in the section "Ideas" would never be timed. If a command is called which finishes them, they'll receive a "@done" tag with no date value.
In the above example, I'm be using the "@idea" tag to track ideas. I might add an idea for future reference and leave it for days. When I finally get around to doing something with it, I don't want 72 hours of time to be tracked in my reports. With the never_time
setting, I'll know that I can just use doing finish
with a search argument to mark it complete and it won't be dated.
You can also prevent an entry from ever being marked @done
with the never_finish
key (using the same parameters).