1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//! What:
//! Pushes:
//! the automatic push after a commit,
//! manual push handling,
//! bounded Git queries,
//! retries and progress watching.
//! Why:
//! Push has a long lifecycle with many waits.
//!
//! In TS you'd write (pseudocode):
//! ```ts
//! // push/index.ts: one `export * from './file'` per module below.
//! ```
/// Controls for stopping a push on no progress, with real Git and a local remote.
/// Controls for a push that waits for a slow server while connected, on probes that hold sockets and on Git over HTTP.
/// Controls for a push whose server runs a silent check after the pack is sent, over HTTP and over a local path.
/// The push of a merge that integrated a lost race, planned and run inside the running wrapper.
/// The service's own retry of a push it stopped or that failed: the pauses, the waiting branches, the final failure.
/// The retry plan on disk, in the service instance's journal, so that a restarted service keeps trying the pushes it was trying.
/// The per-branch file name of the push failure notice: a reversible, flat, case-safe key.
/// The shared clock of every wait notice: the grace, the repeat interval and a queued commit's place in line.
/// A watcher for waits that block on a child process: notices at the cadence and the child stopped at the bound.
/// The classes of Git step a commit starts for itself, with the bound and the notice grace of each.
/// Read-only Git queries of the auto-push, each with a deadline and separate output streams.
/// The auto-push's real `git push` with a deadline and its low-speed abort.
/// The bytes a push and its processes move, sampled, and the clock that stops it on a stall.
/// The connected TCP sockets of the machine with their byte counts, and the sockets a process holds.
/// The real Git of a push, its query runner and the failure types of a push.
/// Where a plain `git push` of one named branch goes, from the configuration and the local refs.
/// The push a merge, pull, cherry-pick, revert or am hands to the service when it leaves the branch ahead of its upstream.
/// The record of each decision of the push trigger: handed over, or declined with its reason.
/// Publishing a landed commit that a moved remote branch rejected: the merge is made from objects alone and pushed.
/// What a reconcile of a rejected push shares: the line prefixes, the attempt limit, the stale-rejection test and the small Git queries.
/// The merge commit of a reconcile, built in the object store without a worktree or an index.
/// The move of the local branch after the merge was pushed, and the checks that guard it.
/// The reading of a configured push refspec and the judgement of what the refspecs make of one branch.
/// The deadline a push may show nothing for, its default and the patience a push runs under.
/// The public update of one pushed reference and the limits on the probe's side-by-side queries.
/// What a child watch is made of below its public face: terms, marks, shared flags and the stopping of a child.
/// How a watched step may be ended and the errors that say it was.
/// The paths of a dirty worktree and of a fast-forward, and their overlap.
/// Post-commit auto-push of a landed commit: the push argv, the surfaced output and the failure reporting.
/// Authoritative manual-push updates discovered by a private dry-run push and confirmed with ls-remote.
/// Why a manual push's scope could not be established, as the cause its hint is chosen by.
/// Why the probe of a manual push could not establish the updates Git would push, and what Git said when it refused.
/// The updates a manual `git push` would send, learned from Git's own dry-run report and confirmed against the remote.
/// Published-set and range computation for manual-push scans: which pushed commits a remote does not have.
/// An explicit push that lost a race: run as a child, merge in what landed on the remote and publish the merge.
/// Starting a child again when the operating system refuses it for lack of processes, within a bounded wait.
/// The manual-push candidate scope of one push: the commits and trees the destination lacks.
/// Whether a command's output is read by a program, so that no failure notice is shown to it.
/// The record of a failed backup push and the rule for when a wrapper command shows it.
/// The words that say how to change the push deadline, for the terminal and for the resident commit service.