6

我正在尝试使用 taskwarrior 来跟踪时间以进行计费。

为此,我试图生成一份报告,显示每项任务花费的时间。标准的完成报告给出了创建和完成的日期,但没有给出时间,所以我看不到在任务上花费了多少小时。

$ task completed project:test

ID UUID     Created    Completed  Age   Project Description
 - fed3daca 2019-09-29 2019-09-29 10min test    test1
 - 31a8f13e 2019-09-29 2019-09-29 1min  test    test2      

2 tasks

这是taskwarrior可以做到的吗?谢谢

4

2 回答 2

5

我不认为 taskwarrior 可以自己创建这些报告,但您可以使用timewarrior来做到这一点。

设置 timewarrior 后,将跟踪花费在每个任务上的时间。例子:

➜  ~ task add reply on stack overflow 
Created task 341.
➜  ~ task start 341
Starting task 81b73133 'reply on stack overflow'.
Started 1 task.
Tracking "reply on stack overflow"
  Started 2020-04-10T12:07:58
  Current                  59
  Total               0:00:01
➜  ~ task 341 done 
Completed task 81b73133 'reply on stack overflow'.
Completed 1 task.
Recorded "reply on stack overflow"
  Started 2020-04-10T12:07:58
  Ended                 09:12
  Total               0:01:14

默认情况下,您将看到您在任务上花费了多少时间。如果您多次启动和停止任务,或者想查看您在某个项目或具有特定标签的任务上花费的时间,您可以直接查询 timewarrior:

➜  ~ timew summary 'reply on stack overflow'

Wk  Date       Day Tags                       Start      End    Time   Total
W15 2020-04-10 Fri reply on stack overflow 12:07:58 12:09:12 0:01:14 0:01:14
                                                                            
                                                                     0:01:14

这显示了您今天在该任务上花费的时间。如果您想查看在任务/项目/标签上花费的总时间,您还可以指定时间间隔。例子:

➜  ~ timew summary 2020-01-01 - tomorrow 'reply on stack overflow'

Wk  Date       Day Tags                       Start      End    Time   Total
W15 2020-04-10 Fri reply on stack overflow 12:07:58 12:09:12 0:01:14 0:01:14
                                                                            
                                                                     0:01:14

要查看您在项目上花费了多少时间,test您可以运行:

timew summary 2018-01-01 - tomorrow test

这还将包括名为“测试”的任务和带有标签的任务test

于 2020-02-11T12:26:59.413 回答
0

正如 Tom Dörr 所提到的,使用timewarrior通过标签进行总结。

这就是我的做法:

  1. 按日期范围收集标签,根据需要修改日期范围:
    timew tags :week
  2. 从输出中删除标题:
    timew tags :week | tail -n+4
  3. 使用 awk 通过破折号分隔字段并打印第一个字段:
    timew tags :week | tail -n+4 | awk 'BEGIN {FS="-"}; {print $1}'

这会生成所选日期范围的标签列表,每个标签都在一行中。现在您可以使用脚本(例如summarize.sh)遍历这些标签进行总结:

#!/bin/bash
while read TAG; do
  [ "${TAG}" = "" ] && continue
  timew summary :week "${TAG}"
done < <(timew tags :week | tail -n+4 | awk 'BEGIN {FS="-"}; {print $1}')

这样您也可以处理包含空格的标签。

至少,在 shell/bash 中运行一个循环来永久更新,例如每秒:

while :; do clear; date; ./summarize.sh; sleep 1; done
于 2021-05-12T10:56:29.123 回答