Show a merge's push to the remote while it runs
This commit is contained in:
+17
-15
@@ -514,29 +514,30 @@ func (s *Store) ClearFinalizing(ctx context.Context, id string) error {
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Store) SetFinalizingCommit(ctx context.Context, id, commit, notes string) error {
|
||||
return s.setFinalizing(ctx, id, commit, notes, false)
|
||||
func (s *Store) SetFinalizingCommit(ctx context.Context, id, commit, notes, pushed string) error {
|
||||
return s.setFinalizing(ctx, id, commit, notes, pushed, false)
|
||||
}
|
||||
|
||||
func (s *Store) SetFinalizingUnchanged(ctx context.Context, id string) error {
|
||||
return s.setFinalizing(ctx, id, "", "", true)
|
||||
return s.setFinalizing(ctx, id, "", "", "", true)
|
||||
}
|
||||
|
||||
func (s *Store) setFinalizing(ctx context.Context, id, commit, notes string, unchanged bool) error {
|
||||
func (s *Store) setFinalizing(ctx context.Context, id, commit, notes, pushed string, unchanged bool) error {
|
||||
return s.write(ctx, func(tx *sql.Tx, emit emitFunc) error {
|
||||
res, err := tx.ExecContext(ctx, `UPDATE tasks SET finalizing_commit = ?, finalizing_notes = ?, finalizing_unchanged = ? WHERE id = ? AND status = ? AND finalizing != ''`,
|
||||
commit, notes, unchanged, id, string(api.TaskStatusActive))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
n, err := res.RowsAffected()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if n == 0 {
|
||||
projectID := ""
|
||||
err := tx.QueryRowContext(ctx, `UPDATE tasks SET finalizing_commit = ?, finalizing_notes = ?, finalizing_unchanged = ? WHERE id = ? AND status = ? AND finalizing != '' RETURNING project_id`,
|
||||
commit, notes, unchanged, id, string(api.TaskStatusActive)).Scan(&projectID)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return ErrNotFound
|
||||
}
|
||||
return nil
|
||||
if err != nil || commit == "" {
|
||||
return err
|
||||
}
|
||||
err = emit(api.Event{Kind: "task.pushing", ProjectId: &projectID, TaskId: &id, Actor: "byre", Payload: map[string]any{"id": id, "commit": commit, "pushed": pushed}})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return settleTaskState(ctx, tx, emit, id, "byre")
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1611,6 +1612,7 @@ const taskStateExpr = `CASE
|
||||
END
|
||||
WHEN tasks.discard_state != '' THEN 'discarding'
|
||||
WHEN EXISTS (SELECT 1 FROM inbox_items i WHERE i.task_id = tasks.id AND i.state = 'open') THEN 'asking'
|
||||
WHEN tasks.finalizing != '' AND tasks.finalizing_commit != '' THEN 'pushing'
|
||||
WHEN tasks.merging_by != '' OR tasks.finalizing != '' OR tasks.parent_merge_by != '' THEN 'merging'
|
||||
WHEN tasks.merge_queued_by != '' THEN 'merge_held'
|
||||
WHEN tasks.merge_after_review_by != '' THEN 'merge_after_review'
|
||||
|
||||
Reference in New Issue
Block a user