You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Gitte is a developer environment orchestration tool for teams working across many git repositories. It keeps all your repos in sync, runs startup checks to verify your local machine is ready, and executes ordered actions (build, up, down, etc.) across projects with dependency resolution.
5
+
**Monorepo-like development across many git repositories — without the monorepo.**
6
+
7
+
Gitte keeps all your repos in sync, runs startup checks to verify your local machine is ready, and executes ordered actions (build, up, down, …) across projects with dependency resolution and parallel execution.
8
+
9
+
---
10
+
11
+
## Table of contents
12
+
13
+
-[Features](#features)
14
+
-[Installation](#installation)
15
+
-[Quick start](#quick-start)
16
+
-[Commands](#commands)
17
+
-[Configuration](#configuration)
18
+
-[Environment variables](#environment-variables)
19
+
-[Global flags](#global-flags)
20
+
-[State and override files](#state-and-override-files)
21
+
22
+
---
6
23
7
24
## Features
8
25
@@ -11,9 +28,12 @@ Gitte is a developer environment orchestration tool for teams working across man
11
28
-**Ordered actions** — run commands across projects with `needs`-based dependency ordering and parallel execution
12
29
-**Project toggles** — interactively enable/disable projects per machine
13
30
-**Template inheritance** — share action definitions across similar projects
14
-
-**Feature gates** — toggle environment-variable-based features per machine
31
+
-**Feature gates** — toggle environment-variable-based behaviours per machine
15
32
-**Auto-discovery** — discover and sync repositories from GitLab groups or GitHub orgs
16
-
-**TTY-aware output** — spinner TUI in a terminal, structured plain-text output in CI/non-TTY
33
+
-**Clean operations** — remove untracked files, reset local changes, or check out default branches across all repos
34
+
-**TTY-aware output** — animated spinner TUI in a terminal, structured plain-text output in CI / non-TTY
35
+
36
+
---
17
37
18
38
## Installation
19
39
@@ -45,9 +65,11 @@ Requires Go 1.24 or later.
45
65
go install github.com/cego/gitte@latest
46
66
```
47
67
68
+
---
69
+
48
70
## Quick start
49
71
50
-
Create a `.gitte.yml` in the root of your workspace:
72
+
**1.**Create a `.gitte.yml` in your workspace root:
51
73
52
74
```yaml
53
75
startup:
@@ -69,59 +91,73 @@ projects:
69
91
local: ["docker", "compose", "down"]
70
92
```
71
93
72
-
Then run:
94
+
**2.** Run the full pipeline:
73
95
74
96
```bash
75
97
gitte run up local
76
98
```
77
99
78
-
Gitte will run startup checks, pull all repos, then execute the `up` action for group `local` on all enabled projects.
100
+
Gitte will run startup checks, pull all repos, then execute the `up` action for group `local` across all enabled projects.
101
+
102
+
---
79
103
80
104
## Commands
81
105
106
+
### Overview
107
+
82
108
| Command | Description |
83
109
|---------|-------------|
84
110
|`gitte run [action] [group] [projects]`| Full pipeline: startup checks → git sync → actions |
85
111
|`gitte actions [action] [group] [projects]`| Run actions only (skip startup and git sync) |
86
112
|`gitte startup`| Run startup checks only |
87
113
|`gitte gitops [--discover]`| Clone/pull all repos; `--discover` also fetches from configured sources |
88
114
|`gitte list`| List all projects and their available actions |
89
-
|`gitte toggle`| Interactive TUI to enable/disable projects |
90
-
|`gitte features list`| List all feature gates and their enabled state |
91
-
|`gitte features enable <gate>`| Enable a feature gate |
92
-
|`gitte features disable <gate>`| Disable a feature gate |
93
-
|`gitte sources`| Manage local discovery sources (GitLab groups / GitHub orgs) |
94
-
|`gitte token set <gitlab\|github> <host>`| Store an API token in the system keyring |
115
+
|`gitte toggle`| Interactive TUI to enable/disable projects per machine |
116
+
|`gitte clean <subcommand>`| Clean up repos (see below) |
117
+
|`gitte features list\|enable\|disable`| Manage feature gates |
gitte clean local-changes # reset repos with local changes (prompts first)
142
+
gitte clean local-changes # reset repos with local changes (prompts before acting)
117
143
gitte clean master # checkout the default branch in all repos
118
144
gitte clean all # run all three in sequence
119
145
```
120
146
147
+
`gitte clean local-changes` lists affected repos and prompts:
148
+
149
+
```
150
+
Reset [a]ll / [i]ndividually / [C]ancel?
151
+
```
152
+
153
+
---
154
+
121
155
## Configuration
122
156
123
157
See [docs/config.md](./docs/config.md) for the full configuration reference.
124
158
159
+
---
160
+
125
161
## Environment variables
126
162
127
163
| Variable | Default | Description |
@@ -132,6 +168,8 @@ See [docs/config.md](./docs/config.md) for the full configuration reference.
132
168
|`GITTE_NO_REBASE`|`false`| Set to `true` to skip auto-rebase onto default branch |
133
169
|`GITTE_MAX_TASK_PARALLELIZATION`| unlimited | Cap the number of concurrent tasks |
134
170
171
+
---
172
+
135
173
## Global flags
136
174
137
175
```
@@ -140,10 +178,10 @@ See [docs/config.md](./docs/config.md) for the full configuration reference.
140
178
--no-tty Force plain-text output
141
179
```
142
180
143
-
## State file
181
+
---
144
182
145
-
Gitte stores per-machine state (project toggles, feature gate overrides, remote config cache) in `.gitte-state.yml` next to your `.gitte.yml`. This file is automatically added to `.gitignore`.
183
+
## State and override files
146
184
147
-
## Override file
185
+
**`.gitte-state.yml`** — stores per-machine state: project toggles, feature gate overrides, and remote config cache. Gitte automatically adds this file to `.gitignore`. Do not commit it.
148
186
149
-
If `.gitte-override.yml` exists alongside `.gitte.yml`, it is deep-merged on top. Use this for local machine overrides that should not be committed.
187
+
**`.gitte-override.yml`** — deep-merged on top of `.gitte.yml` when present. Use this for local machine-specific settings that should not be committed (e.g. `sources` added via `gitte sources add`).
0 commit comments