mesh-issues and mesh-knowledge: milestones are records of the issue tracker, and progress reads them (ADR 0493 §1 to §4, issue 1781)
mesh-issues keeps each design's milestone in the state milestones (history 5), says milestone-set and milestone-moved, and serves milestones, milestone-set and milestone-move. An issue's milestone is its own link of kind milestone, so at most one milestone per issue is checked inside the issue's own write; kind commit links a fixing commit. The triage links no milestone, pull request or commit. import with milestones=N seeds a design's table once. mesh-knowledge's progress reads issue-tracker.milestones and its table parse is gone. Squashed from four commits so the branch history does not carry a compiled bundle that was committed by mistake (6 MB); the path is now in .gitignore.
This commit is contained in:
@@ -5,8 +5,9 @@ package main
|
||||
// level, in two forms: minimal, one line per child, cheap enough for every five minutes; detailed, the tree of a
|
||||
// lead's report with the pull requests, the held groups and what waits on whom, for about every thirty.
|
||||
//
|
||||
// It keeps no state of its own. It reads, each a request and reply over the bus: the designs through the records
|
||||
// module (design.go, cached by hq's commit), the issues from the issue tracker (`issue-tracker.list`, whose rows
|
||||
// It keeps no state of its own. It reads, each a request and reply over the bus: the designs' titles and states through
|
||||
// the records module (design.go, cached by hq's commit), their milestones from the issue tracker (milestones.go,
|
||||
// issue 1781), the issues from the issue tracker (`issue-tracker.list`, whose rows
|
||||
// say each issue's delivery and when it last moved), and the deliveries and groups from mesh-delivery.
|
||||
|
||||
import (
|
||||
@@ -287,6 +288,9 @@ func milestoneItems(d *Design, rows map[int]trackerRow, missing map[int]bool) ([
|
||||
}
|
||||
}
|
||||
rollUp(&mi, kids)
|
||||
if m.Status == "closed" && len(kids) == 0 {
|
||||
mi.State, mi.Why = StateDone, "closed: "+m.Reason
|
||||
}
|
||||
mi.Children = kids
|
||||
items = append(items, mi)
|
||||
}
|
||||
@@ -303,9 +307,15 @@ func (k *KB) progressDesign(p *Progress, number int, milestone string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if ds, err = k.withMilestones(ds, number); err != nil {
|
||||
return err
|
||||
}
|
||||
d := ds[0]
|
||||
p.Source = fmt.Sprintf("the milestone table of %s at hq %s (until the tracker's milestone records, issue 1781)", d.Path, short(commit))
|
||||
p.Warnings = append(p.Warnings, d.Warnings...)
|
||||
if len(d.Milestones) == 0 {
|
||||
return fmt.Errorf("design %d has no milestone records in the issue tracker: seed them from its table with "+
|
||||
"issue-tracker.import milestones %d", number, number)
|
||||
}
|
||||
p.Source = fmt.Sprintf("the issue tracker's milestone records of design %d, and %s at hq %s", number, d.Path, short(commit))
|
||||
ms := d
|
||||
if milestone != "" {
|
||||
m := d.milestone(milestone)
|
||||
@@ -354,7 +364,10 @@ func (k *KB) progressMesh(p *Progress) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.Source = fmt.Sprintf("the designs in %s at hq %s", DesignsFolder, short(commit))
|
||||
if ds, err = k.withMilestones(ds, 0); err != nil {
|
||||
return err
|
||||
}
|
||||
p.Source = fmt.Sprintf("the issue tracker's milestone records, and the designs in %s at hq %s", DesignsFolder, short(commit))
|
||||
var with []*Design
|
||||
var without []string
|
||||
for _, d := range ds {
|
||||
|
||||
Reference in New Issue
Block a user