任务战士 - 是否可以报告任务所花费的时间?

8

我希望使用 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)可以完成的吗? 谢谢。

2个回答

7

我认为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”的任务和带有标签test的任务。

请发布更多信息丰富的答案。您提供的链接没有包含任何关于如何实现此问题所要求的指示。 - alec
Timewarrior是Taskwarrior的事实上标准时间跟踪功能(尽管还有一个Watson Utils脚本提供Taskwarrior钩子),但是没有明显的方法可以查看在任务上花费了多少小时(有点奇怪)。 - alec
@alec 我刚刚更新了我的答案,这是你要找的吗? - Tom Dörr
这很有帮助。是否总是需要包含日期范围?没有自动的方法来表示“此标签的所有跟踪时间”吗?(我认为在timewarrior项目/任务中被转换为“标签”。)每次都要输入日期范围很麻烦...可以通过编写一个包装函数来避免,但奇怪的是程序本身没有提供这样的方式。 - alec
2
我不知道有没有内置的方法可以查询完整的日期范围,但我同意这将会很有用。我们可以在 Github 上开一个问题。只是让你知道:有 timew week tagtimew month tag 报告,它们确实设置了日期范围。 - Tom Dörr

3

如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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接