Situace
Plán s dvaceti úkoly a hrstkou závislostí má v sobě pořadí, které nikdo nezapsal. Pracovníci berou, co vypadá zajímavě, dva z nich vezmou úkoly dotýkající se stejných souborů a závislost, na kterou někdo zapomněl, se vynoří jako rebase.
Co spouštíte
plan validate: konzistence modelu, odkazů, DAG a stavuplan waves,plan ready,plan blocked: pořadí, které graf implikuje, a co na čem čekáplan next: jediný úkol k převzetístart <task> --scope <paths>: úloha v rozsahu úkolu, s překryvem hlášeným při startu
Scénář
setup: plan-model
given:
- 'installed, with a canonical project model carrying one milestone and two issues'
steps:
- id: validate
run: ['plan', 'validate']
note: 'schemas, references, the DAG and status consistency; a cycle or a dependency on a missing issue is refused by name'
expect:
exit: 0
stdout_contains: ['0 failure']
- id: waves
run: ['plan', 'waves']
note: 'topological execution waves; issues in one wave that touch the same paths are reported as serialised'
expect:
exit: 0
stdout_contains: ['^Wave 0', 'I0001 +READY', '^Wave 1', 'I0002 +BLOCKED']
- id: ready
run: ['plan', 'ready']
note: 'issues whose dependencies are all satisfied'
expect:
exit: 0
stdout_contains: ['I0001']
stdout_not_contains: ['I0002']
- id: blocked
run: ['plan', 'blocked']
note: 'issues waiting on a dependency, and on which one'
expect:
exit: 0
stdout_contains: ['I0002']
- id: next
run: ['plan', 'next']
note: 'the one issue a worker should take now'
expect:
exit: 0
stdout_contains: ['^I0001 ', 'scope:', 'next: majordomus plan start I0001']
- id: take-it
run: ['start', 'I0001', '--scope', 'src/I0001']
note: 'the task under the scope the issue names; overlap with other worktrees is computed on claimed paths'
expect:
exit: 0
stdout_contains: ['t-']
then:
- 'status is derived from recorded facts and stored nowhere'
- 'two issues in one wave with overlapping paths are named as serialised'
- 'the task started carries the scope the issue claims'Výsledek
Pořadí se počítá, nepamatuje se. Paralelní úkoly, které by se srazily, jsou pojmenovány dřív, než je někdo začne, a úkol, který si worker vezme, je ten, který graf označuje jako další.