git-review-workflow 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.es.md +548 -548
- package/README.md +540 -540
- package/VERSION +1 -1
- package/bin/git-review +1 -1
- package/bin/git-review-lib.sh +0 -0
- package/bin/git-review-verbs/abort +0 -0
- package/bin/git-review-verbs/clean +0 -0
- package/bin/git-review-verbs/compare +0 -0
- package/bin/git-review-verbs/continue +0 -0
- package/bin/git-review-verbs/finish +0 -0
- package/bin/git-review-verbs/forget +0 -0
- package/bin/git-review-verbs/list +0 -0
- package/bin/git-review-verbs/next +0 -0
- package/bin/git-review-verbs/prev +0 -0
- package/bin/git-review-verbs/preview +0 -0
- package/bin/git-review-verbs/save +0 -0
- package/bin/git-review-verbs/start +0 -0
- package/bin/git-review-verbs/status +0 -0
- package/package.json +42 -39
package/README.es.md
CHANGED
|
@@ -1,548 +1,548 @@
|
|
|
1
|
-
# git-review-workflow
|
|
2
|
-
|
|
3
|
-
> Revisá un pull request **editándolo y corriéndolo**, no solo leyéndolo. Todo el
|
|
4
|
-
> PR aparece en tu working tree como un único diff staged; después tus
|
|
5
|
-
> correcciones se extraen a una rama limpia automáticamente. Re-revisá solo lo
|
|
6
|
-
> que cambió.
|
|
7
|
-
|
|
8
|
-
[](https://github.com/EzeVillo/git-review-workflow/actions/workflows/ci.yml)
|
|
9
|
-
[](LICENSE)
|
|
10
|
-
[](https://github.com/EzeVillo/git-review-workflow/releases)
|
|
11
|
-
|
|
12
|
-
[English](README.md) · **Español**
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
Revisar en una web está bien para dejar comentarios, pero es malo para realmente
|
|
17
|
-
*correr* y *editar* el código. `git review start` pone todo el PR en tu working
|
|
18
|
-
tree como **cambios staged sin commitear**: crea una rama `review/<rama>` cuyo
|
|
19
|
-
working tree tiene el tip del PR, pero con el `HEAD` parado en el merge-base con
|
|
20
|
-
tu rama base. Como es simplemente tu working tree, abrís todo el PR en cualquier
|
|
21
|
-
editor — leés el diff, lo editás inline, corrés los tests — y cuando terminás,
|
|
22
|
-
`git review finish` extrae *tus* ediciones a una rama separada `review-fixes/<rama>`
|
|
23
|
-
(o directo sobre la rama del PR), manteniéndolas limpiamente aparte del trabajo
|
|
24
|
-
del autor. Re-revisá solo los commits nuevos tras una actualización con `--delta`.
|
|
25
|
-
|
|
26
|
-
> **Todos los comandos viven bajo `git review <verbo>`** — `git review start`,
|
|
27
|
-
> `git review finish`, `git review status`, etc., como `git bisect` y `git stash`
|
|
28
|
-
> agrupan sus verbos.
|
|
29
|
-
|
|
30
|
-
## ¿Por qué no usar la vista de PR de tu IDE?
|
|
31
|
-
|
|
32
|
-
La mayoría de las herramientas te dejan *ver* un PR. Lo que esto resuelve es
|
|
33
|
-
*actuar* sobre uno — editarlo y correrlo como cambios normales del working tree y
|
|
34
|
-
después devolver tus correcciones sin stash ni cherry-pick manuales.
|
|
35
|
-
|
|
36
|
-
| | Ver el PR | Editar y correr como working tree | Extraer tus fixes automáticamente | Re-review incremental (`--delta`) | Independiente del editor |
|
|
37
|
-
|----------------------------------|:------------------:|:---------------------------------:|:---------------------------------:|:---------------------------------:|:------------------------:|
|
|
38
|
-
| **git-review-workflow** | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
39
|
-
| `gh pr checkout` / `glab` | ⚠️ checkout pelado | ✅ | ❌ | ❌ | ✅ |
|
|
40
|
-
| JetBrains *Review Pull Request* | ✅ | ⚠️ solo en el IDE | ❌ | ❌ | ❌ |
|
|
41
|
-
| Extensión *GitHub PR* de VS Code | ✅ | ⚠️ solo en el IDE | ❌ | ❌ | ❌ |
|
|
42
|
-
| Web de GitHub / GitLab | ✅ | ❌ | ❌ | ⚠️ parcial | ✅ |
|
|
43
|
-
|
|
44
|
-
Como el PR son simplemente cambios staged, cualquier cosa que lea un diff de Git
|
|
45
|
-
lo ve entero — incluidos agentes de IA como Claude Code o Codex que no tienen una
|
|
46
|
-
función propia para revisar PRs. Apuntás uno al diff staged y puede revisar o
|
|
47
|
-
corregir todo el PR ahí mismo.
|
|
48
|
-
|
|
49
|
-
Y para las cosas chicas — un rename, un typo, un nombre de variable más claro —
|
|
50
|
-
arreglarlo vos mismo es más rápido y menos burocrático que dejar un comentario y
|
|
51
|
-
esperar la ida y vuelta, sobre todo cuando ya estás mirando el PR en tu editor.
|
|
52
|
-
Como tus ediciones se extraen automáticamente, el arreglo te cuesta más o menos
|
|
53
|
-
lo mismo que habría costado el comentario. O le pasás el diff staged a un agente
|
|
54
|
-
y que haga el cambio por vos.
|
|
55
|
-
|
|
56
|
-
Si mayormente *comentás*, el panel nativo de PR de tu IDE alcanza. Si revisás
|
|
57
|
-
editando y corriendo el código — en cualquier editor o agente — esto es lo que
|
|
58
|
-
falta.
|
|
59
|
-
|
|
60
|
-
## Inicio rápido
|
|
61
|
-
|
|
62
|
-
```sh
|
|
63
|
-
# 1. Instalar (necesita Node.js; ver Instalación para Homebrew y una opción sin Node)
|
|
64
|
-
npm install -g git-review-workflow
|
|
65
|
-
|
|
66
|
-
# 2. Decirle dónde se integran los PRs, una vez por repo
|
|
67
|
-
git config reviewworkflow.base develop
|
|
68
|
-
|
|
69
|
-
# 3. Dejar la rama de un PR staged como un único diff y abrir el repo en tu IDE
|
|
70
|
-
git review start feature/login
|
|
71
|
-
# ...leer y editar el diff staged en tu editor, correr tests...
|
|
72
|
-
git review finish # extraer tus ediciones a review-fixes/feature/login
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
¿Preferís Homebrew, un instalador nativo de Windows (PowerShell), o una
|
|
76
|
-
instalación que no necesite Node? Mirá
|
|
77
|
-
[Instalación](#instalación). Para el flujo completo — re-revisar actualizaciones,
|
|
78
|
-
recorrer un PR commit por commit, limpieza — mirá [Flujo típico](#flujo-típico).
|
|
79
|
-
|
|
80
|
-
## Instalación
|
|
81
|
-
|
|
82
|
-
Estos comandos se enchufan a `git` como un único subcomando — los usás como
|
|
83
|
-
`git review start`, `git review finish`, etc. Elegí el método que mejor te quede.
|
|
84
|
-
Las opciones por gestor de paquetes son las más fáciles y **te configuran el
|
|
85
|
-
`PATH` solas**.
|
|
86
|
-
|
|
87
|
-
### npm (recomendado)
|
|
88
|
-
|
|
89
|
-
Si tenés [Node.js](https://nodejs.org), esta es la instalación de un solo comando.
|
|
90
|
-
Te pone `git review` en el `PATH` y anda en Linux, macOS y Windows (en Windows los
|
|
91
|
-
comandos igual corren bajo Git Bash):
|
|
92
|
-
|
|
93
|
-
```sh
|
|
94
|
-
npm install -g git-review-workflow
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Actualizá con `npm install -g git-review-workflow@latest`; desinstalá con
|
|
98
|
-
`npm uninstall -g git-review-workflow`. El autocompletado se configura igual que
|
|
99
|
-
en las otras instalaciones que no son Homebrew — mirá la nota más abajo.
|
|
100
|
-
|
|
101
|
-
### Homebrew (macOS / Linux)
|
|
102
|
-
|
|
103
|
-
```sh
|
|
104
|
-
brew tap EzeVillo/git-review-workflow https://github.com/EzeVillo/git-review-workflow
|
|
105
|
-
brew install EzeVillo/git-review-workflow/git-review-workflow
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
El autocompletado queda configurado automáticamente. Para actualizar a la última
|
|
109
|
-
versión: `brew upgrade git-review-workflow`.
|
|
110
|
-
|
|
111
|
-
### Windows (PowerShell)
|
|
112
|
-
|
|
113
|
-
Necesitás [Git for Windows](https://gitforwindows.org), que provee la shell
|
|
114
|
-
donde corren estos comandos. Abrí PowerShell y ejecutá:
|
|
115
|
-
|
|
116
|
-
```powershell
|
|
117
|
-
irm https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-install.ps1 | iex
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Instala el comando en `~\.local\bin` y agrega esa carpeta al `PATH` de tu usuario
|
|
121
|
-
automáticamente. Abrí una terminal nueva cuando termine. Volvé a correrlo para
|
|
122
|
-
actualizar; para desinstalar:
|
|
123
|
-
|
|
124
|
-
```powershell
|
|
125
|
-
irm https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-uninstall.ps1 | iex
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
(Si tenés Node, `npm install -g git-review-workflow` también anda en Windows — los
|
|
129
|
-
comandos igual corren bajo Git Bash en ambos casos.)
|
|
130
|
-
|
|
131
|
-
### Instalación en una línea (Linux, macOS, WSL, Git Bash)
|
|
132
|
-
|
|
133
|
-
¿Sin gestor de paquetes? Esto descarga el comando y lo instala en `~/.local/bin`
|
|
134
|
-
— ni siquiera necesitás clonar el proyecto antes:
|
|
135
|
-
|
|
136
|
-
```sh
|
|
137
|
-
curl -fsSL https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-install.sh | sh
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Volvé a correrlo para actualizar (siempre instala la última versión). Para
|
|
141
|
-
desinstalar (pasale el mismo `PREFIX` si lo cambiaste):
|
|
142
|
-
|
|
143
|
-
```sh
|
|
144
|
-
curl -fsSL https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-uninstall.sh | sh
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
<details>
|
|
148
|
-
<summary>Desde una copia descargada</summary>
|
|
149
|
-
|
|
150
|
-
Si clonaste o descargaste el proyecto, abrí su carpeta en una terminal y corré:
|
|
151
|
-
|
|
152
|
-
```sh
|
|
153
|
-
./install.sh
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Instala el dispatcher `git review` en `~/.local/bin` (cambiá la ubicación con
|
|
157
|
-
`PREFIX=/usr/local/bin ./install.sh`). Los verbos viajan al lado suyo como
|
|
158
|
-
helpers privados, no como comandos sueltos en tu `PATH`. Lo deshacés cuando
|
|
159
|
-
quieras con `./uninstall.sh`. Para actualizar, simplemente hacé `git pull` dentro
|
|
160
|
-
del repo — el symlink toma los cambios automáticamente.
|
|
161
|
-
</details>
|
|
162
|
-
|
|
163
|
-
<details>
|
|
164
|
-
<summary>"command not found" — agregar <code>~/.local/bin</code> a tu PATH</summary>
|
|
165
|
-
|
|
166
|
-
Tu `PATH` es la lista de carpetas donde tu terminal busca cuando escribís un
|
|
167
|
-
comando. Homebrew, npm y el instalador de PowerShell agregan su carpeta por vos. La
|
|
168
|
-
instalación en una línea y la manual usan `~/.local/bin`, que en la mayoría de
|
|
169
|
-
los sistemas ya está en el `PATH`. Si no lo está, el instalador te deja un aviso
|
|
170
|
-
— agregalo **una sola vez** pegando una línea en el archivo de config de tu
|
|
171
|
-
shell:
|
|
172
|
-
|
|
173
|
-
| Si tu terminal usa… | Agregá esta línea al archivo… | La línea a agregar |
|
|
174
|
-
|-------------------------------------|--------------------------------------|----------------------------------------|
|
|
175
|
-
| **bash** | `~/.bashrc` | `export PATH="$HOME/.local/bin:$PATH"` |
|
|
176
|
-
| **zsh** (default en macOS reciente) | `~/.zshrc` | `export PATH="$HOME/.local/bin:$PATH"` |
|
|
177
|
-
| **fish** | *(sin archivo — corré esto una vez)* | `fish_add_path ~/.local/bin` |
|
|
178
|
-
|
|
179
|
-
¿No sabés cuál usás? Corré `echo $0`. Después de editar el archivo, **abrí una
|
|
180
|
-
terminal nueva** (o hacé `source` del archivo). Corré `git review -h` para
|
|
181
|
-
confirmar.
|
|
182
|
-
</details>
|
|
183
|
-
|
|
184
|
-
<details>
|
|
185
|
-
<summary>Autocompletado (instalaciones manuales)</summary>
|
|
186
|
-
|
|
187
|
-
Homebrew te lo configura. Si no, decile a tu shell que cargue el archivo
|
|
188
|
-
correspondiente al arrancar. Reemplazá `/ruta/a/git-review-workflow` por la
|
|
189
|
-
carpeta donde descargaste el proyecto.
|
|
190
|
-
|
|
191
|
-
```sh
|
|
192
|
-
# bash — en ~/.bashrc
|
|
193
|
-
source /ruta/a/git-review-workflow/completions/git-review-workflow.bash
|
|
194
|
-
|
|
195
|
-
# zsh — en ~/.zshrc
|
|
196
|
-
source /ruta/a/git-review-workflow/completions/git-review-workflow.zsh
|
|
197
|
-
|
|
198
|
-
# fish — copiá el archivo a la carpeta de completions de fish (sin línea de config)
|
|
199
|
-
cp /ruta/a/git-review-workflow/completions/git-review-workflow.fish \
|
|
200
|
-
~/.config/fish/completions/
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
Después abrí una terminal nueva. Ahora, escribiendo `git review ` y apretando
|
|
204
|
-
**Tab**, te ofrece los verbos; `git review start ` te ofrece los nombres de tus
|
|
205
|
-
ramas.
|
|
206
|
-
</details>
|
|
207
|
-
|
|
208
|
-
<details>
|
|
209
|
-
<summary>Git Bash en Windows — ¿error de SSL al instalar?</summary>
|
|
210
|
-
|
|
211
|
-
Si ves `schannel: next InitializeSecurityContext failed` o un mensaje de
|
|
212
|
-
`revocation check`, tu Git for Windows está usando el backend SSL de Windows.
|
|
213
|
-
Arreglalo una vez y volvé a correr el instalador:
|
|
214
|
-
|
|
215
|
-
```sh
|
|
216
|
-
git config --global http.sslBackend openssl
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
</details>
|
|
220
|
-
|
|
221
|
-
## Comandos
|
|
222
|
-
|
|
223
|
-
> **Cómo leer la sintaxis:** `<x>` es **obligatorio**, `[x]` es **opcional**, y
|
|
224
|
-
> `a | b` significa **elegí uno, no los dos**.
|
|
225
|
-
|
|
226
|
-
Cada comando es un verbo bajo `git review`. Corré `git review -h` para ver la
|
|
227
|
-
lista, o `git review <verbo> -h` para el detalle de un verbo.
|
|
228
|
-
|
|
229
|
-
| Comando | Qué hace |
|
|
230
|
-
|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
231
|
-
| `git review [-h \| --version]` | Lista todos los verbos o imprime la versión instalada. |
|
|
232
|
-
| `git review start [<rama>] [<base> \| --base <base> \| --delta \| --from <commit>] [--step] [--local]` | Hace fetch de `origin` y deja el diff del PR staged en una nueva rama `review/<rama>` (omití `<rama>` para revisar la rama actual; `--local` revisa ramas locales sin hacer fetch). |
|
|
233
|
-
| `git review compare <a> <b> [--step]` | Deja staged el diff entre dos commit-ish (tags, commits, ramas) en modo lectura, para leerlo o recorrerlo. `git review finish` se niega — no hay a dónde escribir. |
|
|
234
|
-
| `git review next` / `git review prev` | Mueve una review `--step` al commit siguiente / anterior. |
|
|
235
|
-
| `git review status` | Muestra el estado de la review en la rama actual. |
|
|
236
|
-
| `git review list` | Lista todas las reviews en curso y las guardadas (la rama actual marcada con `*`). |
|
|
237
|
-
| `git review save` | Pausa la review actual como `review-saved/<rama>` y vuelve a donde empezaste. |
|
|
238
|
-
| `git review continue [rama]` | Retoma una review guardada con `git review save`. |
|
|
239
|
-
| `git review finish [--onto-source] [--resume \| --abort [--force]]` | Desde una rama `review/*`, extrae tus ediciones a `review-fixes/<rama>` (o la rama del PR); `--abort` deshace el último finish. |
|
|
240
|
-
| `git review preview [--stat]` | Muestra las ediciones que hiciste hasta ahora — el diff que `finish` extraería — sin commitear ni cambiar de rama. |
|
|
241
|
-
| `git review abort` | Cancela la review actual y vuelve a donde empezaste. |
|
|
242
|
-
| `git review clean [rama]` | Borra las ramas `review/*` y `review-fixes/*` de `<rama>`, o todas. |
|
|
243
|
-
| `git review forget --delta (<rama> \| --all \| --stale [--dry-run])` | Descarta el marcador de `--delta` de una rama, de todas, o solo de las obsoletas. |
|
|
244
|
-
| `git review forget --saved (<rama> \| --all) [--dry-run]` | Descarta una review guardada con `git review save`. |
|
|
245
|
-
|
|
246
|
-
### `git review start`
|
|
247
|
-
|
|
248
|
-
Tiene dos ejes independientes — **rango** (desde dónde empieza) y **layout**
|
|
249
|
-
(`--step` o no), que se combinan libremente.
|
|
250
|
-
|
|
251
|
-
- `<rama>` — la rama a revisar. **Omitila para revisar la rama que tenés
|
|
252
|
-
checkouteada** — el default propio de git (como `push`, `status`, `log`). Solo
|
|
253
|
-
resuelve el nombre; el modo lo siguen eligiendo los flags, así que combiná la
|
|
254
|
-
rama omitida con `--local` para revisar tu trabajo local. Sin `--local` revisa
|
|
255
|
-
`origin/<rama>` — si difiere de tu rama checkouteada te avisa, porque estarías
|
|
256
|
-
revisando un snapshot distinto al que tenés. Con la rama omitida, falla con HEAD
|
|
257
|
-
detached o estando sobre una rama `review/*`.
|
|
258
|
-
- `base` — commit-ish contra el que comparar: una rama, un **tag** o un commit.
|
|
259
|
-
Tomada de `reviewworkflow.base` (ver abajo); el argumento posicional la
|
|
260
|
-
sobreescribe. **Obligatoria para una review completa** — no hay default, así que
|
|
261
|
-
una review completa sin base configurada falla y te pide que la configures. No se
|
|
262
|
-
usa con `--delta` ni `--from`, que ya traen su propio punto de inicio — pasar una
|
|
263
|
-
base explícita junto con ellos es un error (una base que viene de config
|
|
264
|
-
simplemente se ignora).
|
|
265
|
-
- `--base <base>` — la base contra la que comparar, como flag. Usala para pasar
|
|
266
|
-
una base dejando que `<rama>` defaultee a la rama actual — ej.
|
|
267
|
-
`git review start --base develop` revisa la rama en la que estás contra
|
|
268
|
-
`develop` (el posicional solitario siempre se toma como `<rama>`, así que el
|
|
269
|
-
flag es la forma de llegar a la base sin nombrar la rama). No se puede combinar
|
|
270
|
-
con una base posicional.
|
|
271
|
-
- `--delta` — revisar solo los commits agregados **desde tu última review** de
|
|
272
|
-
esta rama, en vez de todo el PR. Ideal para re-revisar un PR actualizado. El
|
|
273
|
-
tip registrado sobrevive a `git review clean`, así que funciona aunque hayas
|
|
274
|
-
borrado las ramas de review; para descartarlo usá `git review forget --delta`.
|
|
275
|
-
- `--from <commit>` — revisar solo los commits **después de `<commit>`**. Útil
|
|
276
|
-
cuando no hay review registrada para usar `--delta`, o para elegir un punto de
|
|
277
|
-
inicio exacto. Mutuamente excluyente con `--delta`.
|
|
278
|
-
- `--step` — revisar el rango **de a un commit por vez** (combinalo con `--delta`
|
|
279
|
-
o `--from` para recorrer solo esos commits). Arrancás en el primer commit
|
|
280
|
-
después del merge-base y el comando imprime el mensaje del autor. Editás y
|
|
281
|
-
corrés `git review next` para bancar tus cambios y pasar al siguiente commit
|
|
282
|
-
con el árbol limpio. Cuando se acaban los commits, corrés `git review finish` y
|
|
283
|
-
todas tus ediciones bancadas se re-aplican sobre el tip del PR — igual que en
|
|
284
|
-
una review completa.
|
|
285
|
-
- `--local` — revisar tus ramas **locales** directamente, sin hacer fetch. La
|
|
286
|
-
review se arma desde tu `<rama>` local y se compara contra tu base local, así
|
|
287
|
-
que funciona offline y te deja revisar tu propio trabajo antes de pushear.
|
|
288
|
-
Mantiene su propio marcador de `--delta`, separado del remoto, así una review
|
|
289
|
-
local y una remota de la misma rama nunca se pisan el progreso.
|
|
290
|
-
- Siempre actualiza desde `origin` primero y **falla** si no puede (salvo con
|
|
291
|
-
`--local`). La revisión se arma desde `origin/<rama>`, nunca desde una copia
|
|
292
|
-
local vieja. Si una rama local con el mismo nombre apunta a otro lado, te avisa:
|
|
293
|
-
la review refleja el remoto, no tu checkout, y un `git review finish
|
|
294
|
-
--onto-source` posterior se va a negar hasta que tu rama local coincida.
|
|
295
|
-
- No corre si tenés cambios locales — arrancá desde una rama limpia.
|
|
296
|
-
- **Los merges de la rama base se excluyen.** Si el autor mergeó la base (ej.
|
|
297
|
-
`develop`) dentro del PR, ese contenido mergeado queda afuera de la review en
|
|
298
|
-
todos los modos, así ves solo los cambios del autor.
|
|
299
|
-
- `--` termina el parseo de opciones, la convención habitual de git: todo lo que
|
|
300
|
-
va después se trata como argumento posicional, así una rama cuyo nombre empieza
|
|
301
|
-
con `-` igual se puede revisar (ej. `git review start -- --weird develop`).
|
|
302
|
-
|
|
303
|
-
### `git review compare`
|
|
304
|
-
|
|
305
|
-
Deja staged el diff entre dos commit-ish — dos tags, dos commits, dos ramas —
|
|
306
|
-
como una review de solo lectura, para leerlo inline o recorrerlo commit por
|
|
307
|
-
commit con la misma UX que una review real, sin `git diff | less`.
|
|
308
|
-
|
|
309
|
-
```sh
|
|
310
|
-
git review compare v1.0 v2.0 # dejar staged el diff entre dos releases
|
|
311
|
-
git review compare v1.0 v2.0 --step # ...y recorrerlo commit por commit
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
- Compara `<a>..<b>`: `<a>` es el límite inferior (donde empieza la review),
|
|
315
|
-
`<b>` el tip cuyo contenido llena el working tree. Ambos se resuelven a commits,
|
|
316
|
-
así que andan tags y SHAs crudos, no solo nombres de rama.
|
|
317
|
-
- Es **de solo lectura por diseño**. Toda la mitad editar→finish del workflow
|
|
318
|
-
necesita una rama escribible a la cual devolver, y un tag o un commit no lo es —
|
|
319
|
-
así que `git review finish` sobre un compare se niega explícitamente ("esta
|
|
320
|
-
review es de solo lectura, no hay a dónde escribir"). Usá `git review abort`
|
|
321
|
-
para terminarlo.
|
|
322
|
-
- `--step` lo recorre de a un commit, igual que `git review start --step`, con
|
|
323
|
-
`git review next` / `git review prev`.
|
|
324
|
-
|
|
325
|
-
### `git review next` / `git review prev`
|
|
326
|
-
|
|
327
|
-
Mueven una review `--step` para adelante o para atrás. Cada movimiento banca las
|
|
328
|
-
ediciones del commit actual y restaura las que tenías bancadas en el commit al
|
|
329
|
-
que vas, así podés ir y venir sin perder trabajo.
|
|
330
|
-
|
|
331
|
-
### `git review status`
|
|
332
|
-
|
|
333
|
-
Muestra la review actual: PR de origen, modo, y — en modo `--step` — en qué
|
|
334
|
-
commit estás (`[k/N]`) y qué pasos tienen ediciones bancadas.
|
|
335
|
-
|
|
336
|
-
### `git review list`
|
|
337
|
-
|
|
338
|
-
Muestra *todas* las ramas `review/*` en curso a la vez (con su PR de origen, modo
|
|
339
|
-
y posición de paso). Las reviews pausadas con `git review save` también aparecen,
|
|
340
|
-
bajo `saved`. La rama en la que estás parado se marca con un `*`.
|
|
341
|
-
|
|
342
|
-
### `git review save` / `git review continue`
|
|
343
|
-
|
|
344
|
-
`git review save` te deja apartar una review y retomarla después. Convierte la
|
|
345
|
-
`review/<rama>` actual en `review-saved/<rama>` y te devuelve a la rama desde la
|
|
346
|
-
que empezaste, llevándose todo lo necesario para retomar justo donde lo dejaste:
|
|
347
|
-
|
|
348
|
-
- En modo PR completo, el diff del PR staged y tus ediciones sin commitear.
|
|
349
|
-
- En modo `--step`, el commit en el que estás, sus ediciones y todas las
|
|
350
|
-
ediciones que tengas bancadas en los otros commits. Los refs de ediciones se
|
|
351
|
-
mueven de `refs/review-edits/` (que `git review clean` poda) a
|
|
352
|
-
`refs/review-saved-edits/`, así un `git review clean` nunca toca una review
|
|
353
|
-
guardada.
|
|
354
|
-
|
|
355
|
-
`git review continue` convierte `review-saved/<rama>` de nuevo en la
|
|
356
|
-
`review/<rama>` activa y restaura ese estado exacto — en modo `--step` te deja de
|
|
357
|
-
vuelta en el mismo commit, con `git review next` / `git review prev` funcionando
|
|
358
|
-
como antes. Sin argumento retoma la única review guardada, o las lista si hay más
|
|
359
|
-
de una; nombrá una rama para elegir cuál.
|
|
360
|
-
|
|
361
|
-
Empezar un `git review start` nuevo sobre una rama que ya tiene una review
|
|
362
|
-
guardada se rechaza, para que no pierdas la pausada sin querer — retomala o
|
|
363
|
-
descartala con `git review forget --saved` primero.
|
|
364
|
-
|
|
365
|
-
### `git review finish`
|
|
366
|
-
|
|
367
|
-
- Por defecto — crea `review-fixes/<rama>` sobre el tip del PR con tus ediciones
|
|
368
|
-
staged, para que las revises y commitees vos.
|
|
369
|
-
- `--onto-source` — en su lugar deja tus ediciones staged sobre la rama del PR
|
|
370
|
-
misma, para que las revises y commitees vos ahí.
|
|
371
|
-
- En cualquiera de los dos casos el resultado queda local — revisalo y pusheá a
|
|
372
|
-
mano cuando estés listo.
|
|
373
|
-
- `--resume` — en modo `--step`, si las ediciones bancadas chocan con el tip del
|
|
374
|
-
PR, el replay deja marcadores de conflicto y se detiene. Resolvélos en el árbol
|
|
375
|
-
y corré `git review finish --resume` (con los mismos flags) para seguir.
|
|
376
|
-
- `--abort` — deshace el último finish y te devuelve a `review/<rama>` justo donde
|
|
377
|
-
estabas editando, igual que `git merge --abort` revierte un merge. Se niega si
|
|
378
|
-
cambiaste la rama del finish desde entonces, para que no pierdas trabajo; agregá
|
|
379
|
-
`--force` para descartar esos cambios y abortar de todas formas.
|
|
380
|
-
- Se niega sobre un `git review compare` de solo lectura — no hay una rama
|
|
381
|
-
escribible a la cual devolver tus ediciones.
|
|
382
|
-
|
|
383
|
-
### `git review preview`
|
|
384
|
-
|
|
385
|
-
Muestra las ediciones que hiciste hasta ahora — el mismo diff que `git review
|
|
386
|
-
finish` extraería, tus ediciones sobre el tip del PR — pero **nunca commitea,
|
|
387
|
-
nunca cambia de rama y nunca toca tu árbol de trabajo ni el índice**, así volvés
|
|
388
|
-
directo a editar donde lo dejaste. Pensalo como "¿qué me daría `finish` ahora
|
|
389
|
-
mismo?".
|
|
390
|
-
|
|
391
|
-
- `--stat` — muestra un resumen tipo diffstat en lugar del diff completo.
|
|
392
|
-
- En modo `--step` re-aplica las ediciones del commit actual más cada edición
|
|
393
|
-
bancada sobre el tip, igual que `finish`. Una edición que choca de verdad con el
|
|
394
|
-
tip es el único caso que difiere: un preview de solo lectura no puede dejarte
|
|
395
|
-
marcadores de conflicto, así que omite esa edición e imprime una nota
|
|
396
|
-
apuntándote a `finish`.
|
|
397
|
-
|
|
398
|
-
### `git review abort`
|
|
399
|
-
|
|
400
|
-
Cancela la review actual en un paso: te devuelve a la rama desde la que empezaste
|
|
401
|
-
y borra la rama `review/<rama>` y sus ediciones bancadas. Como la review se
|
|
402
|
-
canceló (no se completó), vuelve el marcador de `--delta` a tu última review
|
|
403
|
-
real, así un `--delta` posterior no se saltea commits que nunca revisaste.
|
|
404
|
-
|
|
405
|
-
### `git review clean`
|
|
406
|
-
|
|
407
|
-
- Sin `<rama>`, borra todas las ramas `review/*` y `review-fixes/*`.
|
|
408
|
-
- Nunca borra la rama en la que estás parado.
|
|
409
|
-
- También descarta los edit refs bancados commit-a-commit, incluso cuando no
|
|
410
|
-
queda ninguna rama de review.
|
|
411
|
-
- Deja intacto el marcador de `--delta` — para descartarlo usá `git review forget --delta`.
|
|
412
|
-
- Deja intactas las reviews guardadas (`review-saved/*`) — para descartar una usá
|
|
413
|
-
`git review forget --saved`.
|
|
414
|
-
|
|
415
|
-
### `git review forget --delta`
|
|
416
|
-
|
|
417
|
-
Descarta el tip de la última review que usa `--delta`. El marcador se conserva a
|
|
418
|
-
propósito para que `--delta` sobreviva a `git review clean`; así es como lo borrás.
|
|
419
|
-
|
|
420
|
-
- `<rama>` — olvidar el/los marcador(es) de una rama de origen: el remoto y el de
|
|
421
|
-
`--local` si existe.
|
|
422
|
-
- `--all` — olvidar todos los marcadores (no toca `reviewworkflow.base`).
|
|
423
|
-
- `--stale` — hace fetch y prune de `origin`, y olvida solo los marcadores cuya
|
|
424
|
-
rama ya no existe: los remotos cuya `origin/<rama>` se fue (PRs mergeados y
|
|
425
|
-
borrados) y los de `--local` cuya `<rama>` local se fue. Si el fetch falla,
|
|
426
|
-
aborta sin borrar nada.
|
|
427
|
-
- `--dry-run` — con `--stale`, lista lo que olvidaría sin hacerlo. Se rechaza con
|
|
428
|
-
los otros modos, donde el objetivo ya es explícito.
|
|
429
|
-
|
|
430
|
-
### `git review forget --saved`
|
|
431
|
-
|
|
432
|
-
Descarta una review apartada con `git review save`: borra `review-saved/<rama>`,
|
|
433
|
-
sus ediciones bancadas y su metadata. Como una review guardada quedó pausada (no
|
|
434
|
-
completada), también vuelve el marcador de `--delta` a tu última review real, igual
|
|
435
|
-
que hace `git review abort`.
|
|
436
|
-
|
|
437
|
-
- `<rama>` — descartar la review guardada de una rama de origen.
|
|
438
|
-
- `--all` — descartar todas las reviews guardadas.
|
|
439
|
-
- `--dry-run` — listar lo que se descartaría sin descartarlo.
|
|
440
|
-
|
|
441
|
-
## Configurar la rama base
|
|
442
|
-
|
|
443
|
-
La rama base es donde se integran los PRs (`develop`, `main`, `master`, …) y
|
|
444
|
-
varía por equipo, así que no hay default — configurala una vez por repositorio:
|
|
445
|
-
|
|
446
|
-
```sh
|
|
447
|
-
git config reviewworkflow.base develop
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
Orden de resolución: argumento posicional `base` (o `--base <base>`) →
|
|
451
|
-
`reviewworkflow.base`. Si no hay ninguno, una review completa falla y te pide que
|
|
452
|
-
la configures. La base es cualquier commit-ish — una rama, un tag (`v1.0`) o un
|
|
453
|
-
commit — no solo un nombre de rama.
|
|
454
|
-
|
|
455
|
-
## Configurar el remoto
|
|
456
|
-
|
|
457
|
-
Por defecto los comandos hacen fetch y push contra `origin`. Si revisás un
|
|
458
|
-
repositorio que no es tuyo (un `upstream` con tu `origin` como fork, por
|
|
459
|
-
ejemplo), apuntá el flujo a ese remoto:
|
|
460
|
-
|
|
461
|
-
```sh
|
|
462
|
-
git config reviewworkflow.remote upstream
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
Afecta a `git review start` y `git review forget --delta --stale`. Una review
|
|
466
|
-
`--local` ignora el remoto por completo.
|
|
467
|
-
|
|
468
|
-
### Es por repositorio por diseño
|
|
469
|
-
|
|
470
|
-
Tanto `reviewworkflow.base` como `reviewworkflow.remote` son simples claves de
|
|
471
|
-
`git config`, así que se guardan **por repositorio** (en el `.git/config` de cada
|
|
472
|
-
uno). No hay perfiles ni un archivo de config compartido: cada repositorio en el
|
|
473
|
-
que trabajás mantiene su propia base y su propio remoto de forma independiente, y
|
|
474
|
-
nunca se mezclan entre sí:
|
|
475
|
-
|
|
476
|
-
```sh
|
|
477
|
-
# repo A: los PRs se integran en main, traídos desde origin (el default)
|
|
478
|
-
cd ~/proyecto-a && git config reviewworkflow.base main
|
|
479
|
-
|
|
480
|
-
# repo B: los PRs se integran en develop, revisados desde un upstream ajeno
|
|
481
|
-
cd ~/proyecto-b
|
|
482
|
-
git config reviewworkflow.base develop
|
|
483
|
-
git config reviewworkflow.remote upstream
|
|
484
|
-
```
|
|
485
|
-
|
|
486
|
-
Lo mismo aplica a los marcadores de `--delta`: también viven en la config de cada
|
|
487
|
-
repo. Si querés un valor de respaldo para *todos* tus repos, configuralo de forma
|
|
488
|
-
global (`git config --global reviewworkflow.base main`); un valor por repo lo
|
|
489
|
-
sobrescribe, y un argumento posicional `base` sobrescribe a ambos.
|
|
490
|
-
|
|
491
|
-
## Flujo típico
|
|
492
|
-
|
|
493
|
-
```sh
|
|
494
|
-
git config reviewworkflow.base develop # una vez por repo
|
|
495
|
-
|
|
496
|
-
git review start feature/login # dejar todo el PR staged
|
|
497
|
-
# ...abrir el repo en tu IDE, leer el diff staged, editar inline, correr tests...
|
|
498
|
-
git review finish # extraer fixes a review-fixes/feature/login
|
|
499
|
-
git diff --cached && git commit -m "address review comments"
|
|
500
|
-
git review clean feature/login # limpiar
|
|
501
|
-
|
|
502
|
-
# Re-revisar después de que el autor pushea más commits:
|
|
503
|
-
git review start feature/login --delta # solo los commits nuevos
|
|
504
|
-
git review start feature/login --delta --step # ...y recorrerlos de a uno
|
|
505
|
-
|
|
506
|
-
# O recorrer el PR commit por commit desde el principio:
|
|
507
|
-
git review start feature/login --step # arrancar en el primer commit
|
|
508
|
-
# ...editar, y después...
|
|
509
|
-
git review next # bancar cambios, pasar al siguiente
|
|
510
|
-
git review next # ...hasta "no more commits"
|
|
511
|
-
git review finish # re-aplicar todos tus cambios sobre el tip
|
|
512
|
-
|
|
513
|
-
# Elegir un commit de inicio explícito:
|
|
514
|
-
git review start feature/login --from a1b2c3d
|
|
515
|
-
|
|
516
|
-
# Revisar la rama en la que ya estás (omitiendo el nombre):
|
|
517
|
-
git switch feature/login && git review start # contra la base configurada
|
|
518
|
-
git review start --base develop # ...o contra una base explícita
|
|
519
|
-
|
|
520
|
-
# Comparar contra un tag en vez de una rama:
|
|
521
|
-
git review start feature/login v1.0
|
|
522
|
-
|
|
523
|
-
# Comparar dos releases en modo lectura:
|
|
524
|
-
git review compare v1.0 v2.0
|
|
525
|
-
|
|
526
|
-
# Revisar tu propia rama local antes de pushear, offline:
|
|
527
|
-
git review start feature/login --local
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
## Requisitos
|
|
531
|
-
|
|
532
|
-
- Git 2.23+ (usa `git switch`). Se recomienda Git 2.38+: excluir el contenido de
|
|
533
|
-
la base mergeado dentro del PR usa `git merge-tree --write-tree`, y en git más
|
|
534
|
-
viejo ese paso se saltea (el contenido de la base mergeado aparecería en
|
|
535
|
-
`--delta`/`--from`).
|
|
536
|
-
- Un remoto llamado `origin` (o el que configures con `reviewworkflow.remote`).
|
|
537
|
-
- Una shell POSIX. En Linux y macOS es la de por defecto. En Windows los comandos
|
|
538
|
-
corren bajo Git Bash o WSL, no en `cmd.exe` ni PowerShell.
|
|
539
|
-
|
|
540
|
-
## Contribuir
|
|
541
|
-
|
|
542
|
-
Reportes de bugs, fixes e ideas son bienvenidos. Mirá
|
|
543
|
-
[CONTRIBUTING.md](CONTRIBUTING.md) para cómo correr los tests y el proceso de
|
|
544
|
-
release.
|
|
545
|
-
|
|
546
|
-
## Licencia
|
|
547
|
-
|
|
548
|
-
[MIT](LICENSE) © EzeVillo
|
|
1
|
+
# git-review-workflow
|
|
2
|
+
|
|
3
|
+
> Revisá un pull request **editándolo y corriéndolo**, no solo leyéndolo. Todo el
|
|
4
|
+
> PR aparece en tu working tree como un único diff staged; después tus
|
|
5
|
+
> correcciones se extraen a una rama limpia automáticamente. Re-revisá solo lo
|
|
6
|
+
> que cambió.
|
|
7
|
+
|
|
8
|
+
[](https://github.com/EzeVillo/git-review-workflow/actions/workflows/ci.yml)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://github.com/EzeVillo/git-review-workflow/releases)
|
|
11
|
+
|
|
12
|
+
[English](README.md) · **Español**
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
Revisar en una web está bien para dejar comentarios, pero es malo para realmente
|
|
17
|
+
*correr* y *editar* el código. `git review start` pone todo el PR en tu working
|
|
18
|
+
tree como **cambios staged sin commitear**: crea una rama `review/<rama>` cuyo
|
|
19
|
+
working tree tiene el tip del PR, pero con el `HEAD` parado en el merge-base con
|
|
20
|
+
tu rama base. Como es simplemente tu working tree, abrís todo el PR en cualquier
|
|
21
|
+
editor — leés el diff, lo editás inline, corrés los tests — y cuando terminás,
|
|
22
|
+
`git review finish` extrae *tus* ediciones a una rama separada `review-fixes/<rama>`
|
|
23
|
+
(o directo sobre la rama del PR), manteniéndolas limpiamente aparte del trabajo
|
|
24
|
+
del autor. Re-revisá solo los commits nuevos tras una actualización con `--delta`.
|
|
25
|
+
|
|
26
|
+
> **Todos los comandos viven bajo `git review <verbo>`** — `git review start`,
|
|
27
|
+
> `git review finish`, `git review status`, etc., como `git bisect` y `git stash`
|
|
28
|
+
> agrupan sus verbos.
|
|
29
|
+
|
|
30
|
+
## ¿Por qué no usar la vista de PR de tu IDE?
|
|
31
|
+
|
|
32
|
+
La mayoría de las herramientas te dejan *ver* un PR. Lo que esto resuelve es
|
|
33
|
+
*actuar* sobre uno — editarlo y correrlo como cambios normales del working tree y
|
|
34
|
+
después devolver tus correcciones sin stash ni cherry-pick manuales.
|
|
35
|
+
|
|
36
|
+
| | Ver el PR | Editar y correr como working tree | Extraer tus fixes automáticamente | Re-review incremental (`--delta`) | Independiente del editor |
|
|
37
|
+
|----------------------------------|:------------------:|:---------------------------------:|:---------------------------------:|:---------------------------------:|:------------------------:|
|
|
38
|
+
| **git-review-workflow** | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
39
|
+
| `gh pr checkout` / `glab` | ⚠️ checkout pelado | ✅ | ❌ | ❌ | ✅ |
|
|
40
|
+
| JetBrains *Review Pull Request* | ✅ | ⚠️ solo en el IDE | ❌ | ❌ | ❌ |
|
|
41
|
+
| Extensión *GitHub PR* de VS Code | ✅ | ⚠️ solo en el IDE | ❌ | ❌ | ❌ |
|
|
42
|
+
| Web de GitHub / GitLab | ✅ | ❌ | ❌ | ⚠️ parcial | ✅ |
|
|
43
|
+
|
|
44
|
+
Como el PR son simplemente cambios staged, cualquier cosa que lea un diff de Git
|
|
45
|
+
lo ve entero — incluidos agentes de IA como Claude Code o Codex que no tienen una
|
|
46
|
+
función propia para revisar PRs. Apuntás uno al diff staged y puede revisar o
|
|
47
|
+
corregir todo el PR ahí mismo.
|
|
48
|
+
|
|
49
|
+
Y para las cosas chicas — un rename, un typo, un nombre de variable más claro —
|
|
50
|
+
arreglarlo vos mismo es más rápido y menos burocrático que dejar un comentario y
|
|
51
|
+
esperar la ida y vuelta, sobre todo cuando ya estás mirando el PR en tu editor.
|
|
52
|
+
Como tus ediciones se extraen automáticamente, el arreglo te cuesta más o menos
|
|
53
|
+
lo mismo que habría costado el comentario. O le pasás el diff staged a un agente
|
|
54
|
+
y que haga el cambio por vos.
|
|
55
|
+
|
|
56
|
+
Si mayormente *comentás*, el panel nativo de PR de tu IDE alcanza. Si revisás
|
|
57
|
+
editando y corriendo el código — en cualquier editor o agente — esto es lo que
|
|
58
|
+
falta.
|
|
59
|
+
|
|
60
|
+
## Inicio rápido
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
# 1. Instalar (necesita Node.js; ver Instalación para Homebrew y una opción sin Node)
|
|
64
|
+
npm install -g git-review-workflow
|
|
65
|
+
|
|
66
|
+
# 2. Decirle dónde se integran los PRs, una vez por repo
|
|
67
|
+
git config reviewworkflow.base develop
|
|
68
|
+
|
|
69
|
+
# 3. Dejar la rama de un PR staged como un único diff y abrir el repo en tu IDE
|
|
70
|
+
git review start feature/login
|
|
71
|
+
# ...leer y editar el diff staged en tu editor, correr tests...
|
|
72
|
+
git review finish # extraer tus ediciones a review-fixes/feature/login
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
¿Preferís Homebrew, un instalador nativo de Windows (PowerShell), o una
|
|
76
|
+
instalación que no necesite Node? Mirá
|
|
77
|
+
[Instalación](#instalación). Para el flujo completo — re-revisar actualizaciones,
|
|
78
|
+
recorrer un PR commit por commit, limpieza — mirá [Flujo típico](#flujo-típico).
|
|
79
|
+
|
|
80
|
+
## Instalación
|
|
81
|
+
|
|
82
|
+
Estos comandos se enchufan a `git` como un único subcomando — los usás como
|
|
83
|
+
`git review start`, `git review finish`, etc. Elegí el método que mejor te quede.
|
|
84
|
+
Las opciones por gestor de paquetes son las más fáciles y **te configuran el
|
|
85
|
+
`PATH` solas**.
|
|
86
|
+
|
|
87
|
+
### npm (recomendado)
|
|
88
|
+
|
|
89
|
+
Si tenés [Node.js](https://nodejs.org), esta es la instalación de un solo comando.
|
|
90
|
+
Te pone `git review` en el `PATH` y anda en Linux, macOS y Windows (en Windows los
|
|
91
|
+
comandos igual corren bajo Git Bash):
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
npm install -g git-review-workflow
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Actualizá con `npm install -g git-review-workflow@latest`; desinstalá con
|
|
98
|
+
`npm uninstall -g git-review-workflow`. El autocompletado se configura igual que
|
|
99
|
+
en las otras instalaciones que no son Homebrew — mirá la nota más abajo.
|
|
100
|
+
|
|
101
|
+
### Homebrew (macOS / Linux)
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
brew tap EzeVillo/git-review-workflow https://github.com/EzeVillo/git-review-workflow
|
|
105
|
+
brew install EzeVillo/git-review-workflow/git-review-workflow
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
El autocompletado queda configurado automáticamente. Para actualizar a la última
|
|
109
|
+
versión: `brew upgrade git-review-workflow`.
|
|
110
|
+
|
|
111
|
+
### Windows (PowerShell)
|
|
112
|
+
|
|
113
|
+
Necesitás [Git for Windows](https://gitforwindows.org), que provee la shell
|
|
114
|
+
donde corren estos comandos. Abrí PowerShell y ejecutá:
|
|
115
|
+
|
|
116
|
+
```powershell
|
|
117
|
+
irm https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-install.ps1 | iex
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Instala el comando en `~\.local\bin` y agrega esa carpeta al `PATH` de tu usuario
|
|
121
|
+
automáticamente. Abrí una terminal nueva cuando termine. Volvé a correrlo para
|
|
122
|
+
actualizar; para desinstalar:
|
|
123
|
+
|
|
124
|
+
```powershell
|
|
125
|
+
irm https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-uninstall.ps1 | iex
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
(Si tenés Node, `npm install -g git-review-workflow` también anda en Windows — los
|
|
129
|
+
comandos igual corren bajo Git Bash en ambos casos.)
|
|
130
|
+
|
|
131
|
+
### Instalación en una línea (Linux, macOS, WSL, Git Bash)
|
|
132
|
+
|
|
133
|
+
¿Sin gestor de paquetes? Esto descarga el comando y lo instala en `~/.local/bin`
|
|
134
|
+
— ni siquiera necesitás clonar el proyecto antes:
|
|
135
|
+
|
|
136
|
+
```sh
|
|
137
|
+
curl -fsSL https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-install.sh | sh
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Volvé a correrlo para actualizar (siempre instala la última versión). Para
|
|
141
|
+
desinstalar (pasale el mismo `PREFIX` si lo cambiaste):
|
|
142
|
+
|
|
143
|
+
```sh
|
|
144
|
+
curl -fsSL https://raw.githubusercontent.com/EzeVillo/git-review-workflow/main/web-uninstall.sh | sh
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary>Desde una copia descargada</summary>
|
|
149
|
+
|
|
150
|
+
Si clonaste o descargaste el proyecto, abrí su carpeta en una terminal y corré:
|
|
151
|
+
|
|
152
|
+
```sh
|
|
153
|
+
./install.sh
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Instala el dispatcher `git review` en `~/.local/bin` (cambiá la ubicación con
|
|
157
|
+
`PREFIX=/usr/local/bin ./install.sh`). Los verbos viajan al lado suyo como
|
|
158
|
+
helpers privados, no como comandos sueltos en tu `PATH`. Lo deshacés cuando
|
|
159
|
+
quieras con `./uninstall.sh`. Para actualizar, simplemente hacé `git pull` dentro
|
|
160
|
+
del repo — el symlink toma los cambios automáticamente.
|
|
161
|
+
</details>
|
|
162
|
+
|
|
163
|
+
<details>
|
|
164
|
+
<summary>"command not found" — agregar <code>~/.local/bin</code> a tu PATH</summary>
|
|
165
|
+
|
|
166
|
+
Tu `PATH` es la lista de carpetas donde tu terminal busca cuando escribís un
|
|
167
|
+
comando. Homebrew, npm y el instalador de PowerShell agregan su carpeta por vos. La
|
|
168
|
+
instalación en una línea y la manual usan `~/.local/bin`, que en la mayoría de
|
|
169
|
+
los sistemas ya está en el `PATH`. Si no lo está, el instalador te deja un aviso
|
|
170
|
+
— agregalo **una sola vez** pegando una línea en el archivo de config de tu
|
|
171
|
+
shell:
|
|
172
|
+
|
|
173
|
+
| Si tu terminal usa… | Agregá esta línea al archivo… | La línea a agregar |
|
|
174
|
+
|-------------------------------------|--------------------------------------|----------------------------------------|
|
|
175
|
+
| **bash** | `~/.bashrc` | `export PATH="$HOME/.local/bin:$PATH"` |
|
|
176
|
+
| **zsh** (default en macOS reciente) | `~/.zshrc` | `export PATH="$HOME/.local/bin:$PATH"` |
|
|
177
|
+
| **fish** | *(sin archivo — corré esto una vez)* | `fish_add_path ~/.local/bin` |
|
|
178
|
+
|
|
179
|
+
¿No sabés cuál usás? Corré `echo $0`. Después de editar el archivo, **abrí una
|
|
180
|
+
terminal nueva** (o hacé `source` del archivo). Corré `git review -h` para
|
|
181
|
+
confirmar.
|
|
182
|
+
</details>
|
|
183
|
+
|
|
184
|
+
<details>
|
|
185
|
+
<summary>Autocompletado (instalaciones manuales)</summary>
|
|
186
|
+
|
|
187
|
+
Homebrew te lo configura. Si no, decile a tu shell que cargue el archivo
|
|
188
|
+
correspondiente al arrancar. Reemplazá `/ruta/a/git-review-workflow` por la
|
|
189
|
+
carpeta donde descargaste el proyecto.
|
|
190
|
+
|
|
191
|
+
```sh
|
|
192
|
+
# bash — en ~/.bashrc
|
|
193
|
+
source /ruta/a/git-review-workflow/completions/git-review-workflow.bash
|
|
194
|
+
|
|
195
|
+
# zsh — en ~/.zshrc
|
|
196
|
+
source /ruta/a/git-review-workflow/completions/git-review-workflow.zsh
|
|
197
|
+
|
|
198
|
+
# fish — copiá el archivo a la carpeta de completions de fish (sin línea de config)
|
|
199
|
+
cp /ruta/a/git-review-workflow/completions/git-review-workflow.fish \
|
|
200
|
+
~/.config/fish/completions/
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Después abrí una terminal nueva. Ahora, escribiendo `git review ` y apretando
|
|
204
|
+
**Tab**, te ofrece los verbos; `git review start ` te ofrece los nombres de tus
|
|
205
|
+
ramas.
|
|
206
|
+
</details>
|
|
207
|
+
|
|
208
|
+
<details>
|
|
209
|
+
<summary>Git Bash en Windows — ¿error de SSL al instalar?</summary>
|
|
210
|
+
|
|
211
|
+
Si ves `schannel: next InitializeSecurityContext failed` o un mensaje de
|
|
212
|
+
`revocation check`, tu Git for Windows está usando el backend SSL de Windows.
|
|
213
|
+
Arreglalo una vez y volvé a correr el instalador:
|
|
214
|
+
|
|
215
|
+
```sh
|
|
216
|
+
git config --global http.sslBackend openssl
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
</details>
|
|
220
|
+
|
|
221
|
+
## Comandos
|
|
222
|
+
|
|
223
|
+
> **Cómo leer la sintaxis:** `<x>` es **obligatorio**, `[x]` es **opcional**, y
|
|
224
|
+
> `a | b` significa **elegí uno, no los dos**.
|
|
225
|
+
|
|
226
|
+
Cada comando es un verbo bajo `git review`. Corré `git review -h` para ver la
|
|
227
|
+
lista, o `git review <verbo> -h` para el detalle de un verbo.
|
|
228
|
+
|
|
229
|
+
| Comando | Qué hace |
|
|
230
|
+
|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
231
|
+
| `git review [-h \| --version]` | Lista todos los verbos o imprime la versión instalada. |
|
|
232
|
+
| `git review start [<rama>] [<base> \| --base <base> \| --delta \| --from <commit>] [--step] [--local]` | Hace fetch de `origin` y deja el diff del PR staged en una nueva rama `review/<rama>` (omití `<rama>` para revisar la rama actual; `--local` revisa ramas locales sin hacer fetch). |
|
|
233
|
+
| `git review compare <a> <b> [--step]` | Deja staged el diff entre dos commit-ish (tags, commits, ramas) en modo lectura, para leerlo o recorrerlo. `git review finish` se niega — no hay a dónde escribir. |
|
|
234
|
+
| `git review next` / `git review prev` | Mueve una review `--step` al commit siguiente / anterior. |
|
|
235
|
+
| `git review status` | Muestra el estado de la review en la rama actual. |
|
|
236
|
+
| `git review list` | Lista todas las reviews en curso y las guardadas (la rama actual marcada con `*`). |
|
|
237
|
+
| `git review save` | Pausa la review actual como `review-saved/<rama>` y vuelve a donde empezaste. |
|
|
238
|
+
| `git review continue [rama]` | Retoma una review guardada con `git review save`. |
|
|
239
|
+
| `git review finish [--onto-source] [--resume \| --abort [--force]]` | Desde una rama `review/*`, extrae tus ediciones a `review-fixes/<rama>` (o la rama del PR); `--abort` deshace el último finish. |
|
|
240
|
+
| `git review preview [--stat]` | Muestra las ediciones que hiciste hasta ahora — el diff que `finish` extraería — sin commitear ni cambiar de rama. |
|
|
241
|
+
| `git review abort` | Cancela la review actual y vuelve a donde empezaste. |
|
|
242
|
+
| `git review clean [rama]` | Borra las ramas `review/*` y `review-fixes/*` de `<rama>`, o todas. |
|
|
243
|
+
| `git review forget --delta (<rama> \| --all \| --stale [--dry-run])` | Descarta el marcador de `--delta` de una rama, de todas, o solo de las obsoletas. |
|
|
244
|
+
| `git review forget --saved (<rama> \| --all) [--dry-run]` | Descarta una review guardada con `git review save`. |
|
|
245
|
+
|
|
246
|
+
### `git review start`
|
|
247
|
+
|
|
248
|
+
Tiene dos ejes independientes — **rango** (desde dónde empieza) y **layout**
|
|
249
|
+
(`--step` o no), que se combinan libremente.
|
|
250
|
+
|
|
251
|
+
- `<rama>` — la rama a revisar. **Omitila para revisar la rama que tenés
|
|
252
|
+
checkouteada** — el default propio de git (como `push`, `status`, `log`). Solo
|
|
253
|
+
resuelve el nombre; el modo lo siguen eligiendo los flags, así que combiná la
|
|
254
|
+
rama omitida con `--local` para revisar tu trabajo local. Sin `--local` revisa
|
|
255
|
+
`origin/<rama>` — si difiere de tu rama checkouteada te avisa, porque estarías
|
|
256
|
+
revisando un snapshot distinto al que tenés. Con la rama omitida, falla con HEAD
|
|
257
|
+
detached o estando sobre una rama `review/*`.
|
|
258
|
+
- `base` — commit-ish contra el que comparar: una rama, un **tag** o un commit.
|
|
259
|
+
Tomada de `reviewworkflow.base` (ver abajo); el argumento posicional la
|
|
260
|
+
sobreescribe. **Obligatoria para una review completa** — no hay default, así que
|
|
261
|
+
una review completa sin base configurada falla y te pide que la configures. No se
|
|
262
|
+
usa con `--delta` ni `--from`, que ya traen su propio punto de inicio — pasar una
|
|
263
|
+
base explícita junto con ellos es un error (una base que viene de config
|
|
264
|
+
simplemente se ignora).
|
|
265
|
+
- `--base <base>` — la base contra la que comparar, como flag. Usala para pasar
|
|
266
|
+
una base dejando que `<rama>` defaultee a la rama actual — ej.
|
|
267
|
+
`git review start --base develop` revisa la rama en la que estás contra
|
|
268
|
+
`develop` (el posicional solitario siempre se toma como `<rama>`, así que el
|
|
269
|
+
flag es la forma de llegar a la base sin nombrar la rama). No se puede combinar
|
|
270
|
+
con una base posicional.
|
|
271
|
+
- `--delta` — revisar solo los commits agregados **desde tu última review** de
|
|
272
|
+
esta rama, en vez de todo el PR. Ideal para re-revisar un PR actualizado. El
|
|
273
|
+
tip registrado sobrevive a `git review clean`, así que funciona aunque hayas
|
|
274
|
+
borrado las ramas de review; para descartarlo usá `git review forget --delta`.
|
|
275
|
+
- `--from <commit>` — revisar solo los commits **después de `<commit>`**. Útil
|
|
276
|
+
cuando no hay review registrada para usar `--delta`, o para elegir un punto de
|
|
277
|
+
inicio exacto. Mutuamente excluyente con `--delta`.
|
|
278
|
+
- `--step` — revisar el rango **de a un commit por vez** (combinalo con `--delta`
|
|
279
|
+
o `--from` para recorrer solo esos commits). Arrancás en el primer commit
|
|
280
|
+
después del merge-base y el comando imprime el mensaje del autor. Editás y
|
|
281
|
+
corrés `git review next` para bancar tus cambios y pasar al siguiente commit
|
|
282
|
+
con el árbol limpio. Cuando se acaban los commits, corrés `git review finish` y
|
|
283
|
+
todas tus ediciones bancadas se re-aplican sobre el tip del PR — igual que en
|
|
284
|
+
una review completa.
|
|
285
|
+
- `--local` — revisar tus ramas **locales** directamente, sin hacer fetch. La
|
|
286
|
+
review se arma desde tu `<rama>` local y se compara contra tu base local, así
|
|
287
|
+
que funciona offline y te deja revisar tu propio trabajo antes de pushear.
|
|
288
|
+
Mantiene su propio marcador de `--delta`, separado del remoto, así una review
|
|
289
|
+
local y una remota de la misma rama nunca se pisan el progreso.
|
|
290
|
+
- Siempre actualiza desde `origin` primero y **falla** si no puede (salvo con
|
|
291
|
+
`--local`). La revisión se arma desde `origin/<rama>`, nunca desde una copia
|
|
292
|
+
local vieja. Si una rama local con el mismo nombre apunta a otro lado, te avisa:
|
|
293
|
+
la review refleja el remoto, no tu checkout, y un `git review finish
|
|
294
|
+
--onto-source` posterior se va a negar hasta que tu rama local coincida.
|
|
295
|
+
- No corre si tenés cambios locales — arrancá desde una rama limpia.
|
|
296
|
+
- **Los merges de la rama base se excluyen.** Si el autor mergeó la base (ej.
|
|
297
|
+
`develop`) dentro del PR, ese contenido mergeado queda afuera de la review en
|
|
298
|
+
todos los modos, así ves solo los cambios del autor.
|
|
299
|
+
- `--` termina el parseo de opciones, la convención habitual de git: todo lo que
|
|
300
|
+
va después se trata como argumento posicional, así una rama cuyo nombre empieza
|
|
301
|
+
con `-` igual se puede revisar (ej. `git review start -- --weird develop`).
|
|
302
|
+
|
|
303
|
+
### `git review compare`
|
|
304
|
+
|
|
305
|
+
Deja staged el diff entre dos commit-ish — dos tags, dos commits, dos ramas —
|
|
306
|
+
como una review de solo lectura, para leerlo inline o recorrerlo commit por
|
|
307
|
+
commit con la misma UX que una review real, sin `git diff | less`.
|
|
308
|
+
|
|
309
|
+
```sh
|
|
310
|
+
git review compare v1.0 v2.0 # dejar staged el diff entre dos releases
|
|
311
|
+
git review compare v1.0 v2.0 --step # ...y recorrerlo commit por commit
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
- Compara `<a>..<b>`: `<a>` es el límite inferior (donde empieza la review),
|
|
315
|
+
`<b>` el tip cuyo contenido llena el working tree. Ambos se resuelven a commits,
|
|
316
|
+
así que andan tags y SHAs crudos, no solo nombres de rama.
|
|
317
|
+
- Es **de solo lectura por diseño**. Toda la mitad editar→finish del workflow
|
|
318
|
+
necesita una rama escribible a la cual devolver, y un tag o un commit no lo es —
|
|
319
|
+
así que `git review finish` sobre un compare se niega explícitamente ("esta
|
|
320
|
+
review es de solo lectura, no hay a dónde escribir"). Usá `git review abort`
|
|
321
|
+
para terminarlo.
|
|
322
|
+
- `--step` lo recorre de a un commit, igual que `git review start --step`, con
|
|
323
|
+
`git review next` / `git review prev`.
|
|
324
|
+
|
|
325
|
+
### `git review next` / `git review prev`
|
|
326
|
+
|
|
327
|
+
Mueven una review `--step` para adelante o para atrás. Cada movimiento banca las
|
|
328
|
+
ediciones del commit actual y restaura las que tenías bancadas en el commit al
|
|
329
|
+
que vas, así podés ir y venir sin perder trabajo.
|
|
330
|
+
|
|
331
|
+
### `git review status`
|
|
332
|
+
|
|
333
|
+
Muestra la review actual: PR de origen, modo, y — en modo `--step` — en qué
|
|
334
|
+
commit estás (`[k/N]`) y qué pasos tienen ediciones bancadas.
|
|
335
|
+
|
|
336
|
+
### `git review list`
|
|
337
|
+
|
|
338
|
+
Muestra *todas* las ramas `review/*` en curso a la vez (con su PR de origen, modo
|
|
339
|
+
y posición de paso). Las reviews pausadas con `git review save` también aparecen,
|
|
340
|
+
bajo `saved`. La rama en la que estás parado se marca con un `*`.
|
|
341
|
+
|
|
342
|
+
### `git review save` / `git review continue`
|
|
343
|
+
|
|
344
|
+
`git review save` te deja apartar una review y retomarla después. Convierte la
|
|
345
|
+
`review/<rama>` actual en `review-saved/<rama>` y te devuelve a la rama desde la
|
|
346
|
+
que empezaste, llevándose todo lo necesario para retomar justo donde lo dejaste:
|
|
347
|
+
|
|
348
|
+
- En modo PR completo, el diff del PR staged y tus ediciones sin commitear.
|
|
349
|
+
- En modo `--step`, el commit en el que estás, sus ediciones y todas las
|
|
350
|
+
ediciones que tengas bancadas en los otros commits. Los refs de ediciones se
|
|
351
|
+
mueven de `refs/review-edits/` (que `git review clean` poda) a
|
|
352
|
+
`refs/review-saved-edits/`, así un `git review clean` nunca toca una review
|
|
353
|
+
guardada.
|
|
354
|
+
|
|
355
|
+
`git review continue` convierte `review-saved/<rama>` de nuevo en la
|
|
356
|
+
`review/<rama>` activa y restaura ese estado exacto — en modo `--step` te deja de
|
|
357
|
+
vuelta en el mismo commit, con `git review next` / `git review prev` funcionando
|
|
358
|
+
como antes. Sin argumento retoma la única review guardada, o las lista si hay más
|
|
359
|
+
de una; nombrá una rama para elegir cuál.
|
|
360
|
+
|
|
361
|
+
Empezar un `git review start` nuevo sobre una rama que ya tiene una review
|
|
362
|
+
guardada se rechaza, para que no pierdas la pausada sin querer — retomala o
|
|
363
|
+
descartala con `git review forget --saved` primero.
|
|
364
|
+
|
|
365
|
+
### `git review finish`
|
|
366
|
+
|
|
367
|
+
- Por defecto — crea `review-fixes/<rama>` sobre el tip del PR con tus ediciones
|
|
368
|
+
staged, para que las revises y commitees vos.
|
|
369
|
+
- `--onto-source` — en su lugar deja tus ediciones staged sobre la rama del PR
|
|
370
|
+
misma, para que las revises y commitees vos ahí.
|
|
371
|
+
- En cualquiera de los dos casos el resultado queda local — revisalo y pusheá a
|
|
372
|
+
mano cuando estés listo.
|
|
373
|
+
- `--resume` — en modo `--step`, si las ediciones bancadas chocan con el tip del
|
|
374
|
+
PR, el replay deja marcadores de conflicto y se detiene. Resolvélos en el árbol
|
|
375
|
+
y corré `git review finish --resume` (con los mismos flags) para seguir.
|
|
376
|
+
- `--abort` — deshace el último finish y te devuelve a `review/<rama>` justo donde
|
|
377
|
+
estabas editando, igual que `git merge --abort` revierte un merge. Se niega si
|
|
378
|
+
cambiaste la rama del finish desde entonces, para que no pierdas trabajo; agregá
|
|
379
|
+
`--force` para descartar esos cambios y abortar de todas formas.
|
|
380
|
+
- Se niega sobre un `git review compare` de solo lectura — no hay una rama
|
|
381
|
+
escribible a la cual devolver tus ediciones.
|
|
382
|
+
|
|
383
|
+
### `git review preview`
|
|
384
|
+
|
|
385
|
+
Muestra las ediciones que hiciste hasta ahora — el mismo diff que `git review
|
|
386
|
+
finish` extraería, tus ediciones sobre el tip del PR — pero **nunca commitea,
|
|
387
|
+
nunca cambia de rama y nunca toca tu árbol de trabajo ni el índice**, así volvés
|
|
388
|
+
directo a editar donde lo dejaste. Pensalo como "¿qué me daría `finish` ahora
|
|
389
|
+
mismo?".
|
|
390
|
+
|
|
391
|
+
- `--stat` — muestra un resumen tipo diffstat en lugar del diff completo.
|
|
392
|
+
- En modo `--step` re-aplica las ediciones del commit actual más cada edición
|
|
393
|
+
bancada sobre el tip, igual que `finish`. Una edición que choca de verdad con el
|
|
394
|
+
tip es el único caso que difiere: un preview de solo lectura no puede dejarte
|
|
395
|
+
marcadores de conflicto, así que omite esa edición e imprime una nota
|
|
396
|
+
apuntándote a `finish`.
|
|
397
|
+
|
|
398
|
+
### `git review abort`
|
|
399
|
+
|
|
400
|
+
Cancela la review actual en un paso: te devuelve a la rama desde la que empezaste
|
|
401
|
+
y borra la rama `review/<rama>` y sus ediciones bancadas. Como la review se
|
|
402
|
+
canceló (no se completó), vuelve el marcador de `--delta` a tu última review
|
|
403
|
+
real, así un `--delta` posterior no se saltea commits que nunca revisaste.
|
|
404
|
+
|
|
405
|
+
### `git review clean`
|
|
406
|
+
|
|
407
|
+
- Sin `<rama>`, borra todas las ramas `review/*` y `review-fixes/*`.
|
|
408
|
+
- Nunca borra la rama en la que estás parado.
|
|
409
|
+
- También descarta los edit refs bancados commit-a-commit, incluso cuando no
|
|
410
|
+
queda ninguna rama de review.
|
|
411
|
+
- Deja intacto el marcador de `--delta` — para descartarlo usá `git review forget --delta`.
|
|
412
|
+
- Deja intactas las reviews guardadas (`review-saved/*`) — para descartar una usá
|
|
413
|
+
`git review forget --saved`.
|
|
414
|
+
|
|
415
|
+
### `git review forget --delta`
|
|
416
|
+
|
|
417
|
+
Descarta el tip de la última review que usa `--delta`. El marcador se conserva a
|
|
418
|
+
propósito para que `--delta` sobreviva a `git review clean`; así es como lo borrás.
|
|
419
|
+
|
|
420
|
+
- `<rama>` — olvidar el/los marcador(es) de una rama de origen: el remoto y el de
|
|
421
|
+
`--local` si existe.
|
|
422
|
+
- `--all` — olvidar todos los marcadores (no toca `reviewworkflow.base`).
|
|
423
|
+
- `--stale` — hace fetch y prune de `origin`, y olvida solo los marcadores cuya
|
|
424
|
+
rama ya no existe: los remotos cuya `origin/<rama>` se fue (PRs mergeados y
|
|
425
|
+
borrados) y los de `--local` cuya `<rama>` local se fue. Si el fetch falla,
|
|
426
|
+
aborta sin borrar nada.
|
|
427
|
+
- `--dry-run` — con `--stale`, lista lo que olvidaría sin hacerlo. Se rechaza con
|
|
428
|
+
los otros modos, donde el objetivo ya es explícito.
|
|
429
|
+
|
|
430
|
+
### `git review forget --saved`
|
|
431
|
+
|
|
432
|
+
Descarta una review apartada con `git review save`: borra `review-saved/<rama>`,
|
|
433
|
+
sus ediciones bancadas y su metadata. Como una review guardada quedó pausada (no
|
|
434
|
+
completada), también vuelve el marcador de `--delta` a tu última review real, igual
|
|
435
|
+
que hace `git review abort`.
|
|
436
|
+
|
|
437
|
+
- `<rama>` — descartar la review guardada de una rama de origen.
|
|
438
|
+
- `--all` — descartar todas las reviews guardadas.
|
|
439
|
+
- `--dry-run` — listar lo que se descartaría sin descartarlo.
|
|
440
|
+
|
|
441
|
+
## Configurar la rama base
|
|
442
|
+
|
|
443
|
+
La rama base es donde se integran los PRs (`develop`, `main`, `master`, …) y
|
|
444
|
+
varía por equipo, así que no hay default — configurala una vez por repositorio:
|
|
445
|
+
|
|
446
|
+
```sh
|
|
447
|
+
git config reviewworkflow.base develop
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
Orden de resolución: argumento posicional `base` (o `--base <base>`) →
|
|
451
|
+
`reviewworkflow.base`. Si no hay ninguno, una review completa falla y te pide que
|
|
452
|
+
la configures. La base es cualquier commit-ish — una rama, un tag (`v1.0`) o un
|
|
453
|
+
commit — no solo un nombre de rama.
|
|
454
|
+
|
|
455
|
+
## Configurar el remoto
|
|
456
|
+
|
|
457
|
+
Por defecto los comandos hacen fetch y push contra `origin`. Si revisás un
|
|
458
|
+
repositorio que no es tuyo (un `upstream` con tu `origin` como fork, por
|
|
459
|
+
ejemplo), apuntá el flujo a ese remoto:
|
|
460
|
+
|
|
461
|
+
```sh
|
|
462
|
+
git config reviewworkflow.remote upstream
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Afecta a `git review start` y `git review forget --delta --stale`. Una review
|
|
466
|
+
`--local` ignora el remoto por completo.
|
|
467
|
+
|
|
468
|
+
### Es por repositorio por diseño
|
|
469
|
+
|
|
470
|
+
Tanto `reviewworkflow.base` como `reviewworkflow.remote` son simples claves de
|
|
471
|
+
`git config`, así que se guardan **por repositorio** (en el `.git/config` de cada
|
|
472
|
+
uno). No hay perfiles ni un archivo de config compartido: cada repositorio en el
|
|
473
|
+
que trabajás mantiene su propia base y su propio remoto de forma independiente, y
|
|
474
|
+
nunca se mezclan entre sí:
|
|
475
|
+
|
|
476
|
+
```sh
|
|
477
|
+
# repo A: los PRs se integran en main, traídos desde origin (el default)
|
|
478
|
+
cd ~/proyecto-a && git config reviewworkflow.base main
|
|
479
|
+
|
|
480
|
+
# repo B: los PRs se integran en develop, revisados desde un upstream ajeno
|
|
481
|
+
cd ~/proyecto-b
|
|
482
|
+
git config reviewworkflow.base develop
|
|
483
|
+
git config reviewworkflow.remote upstream
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Lo mismo aplica a los marcadores de `--delta`: también viven en la config de cada
|
|
487
|
+
repo. Si querés un valor de respaldo para *todos* tus repos, configuralo de forma
|
|
488
|
+
global (`git config --global reviewworkflow.base main`); un valor por repo lo
|
|
489
|
+
sobrescribe, y un argumento posicional `base` sobrescribe a ambos.
|
|
490
|
+
|
|
491
|
+
## Flujo típico
|
|
492
|
+
|
|
493
|
+
```sh
|
|
494
|
+
git config reviewworkflow.base develop # una vez por repo
|
|
495
|
+
|
|
496
|
+
git review start feature/login # dejar todo el PR staged
|
|
497
|
+
# ...abrir el repo en tu IDE, leer el diff staged, editar inline, correr tests...
|
|
498
|
+
git review finish # extraer fixes a review-fixes/feature/login
|
|
499
|
+
git diff --cached && git commit -m "address review comments"
|
|
500
|
+
git review clean feature/login # limpiar
|
|
501
|
+
|
|
502
|
+
# Re-revisar después de que el autor pushea más commits:
|
|
503
|
+
git review start feature/login --delta # solo los commits nuevos
|
|
504
|
+
git review start feature/login --delta --step # ...y recorrerlos de a uno
|
|
505
|
+
|
|
506
|
+
# O recorrer el PR commit por commit desde el principio:
|
|
507
|
+
git review start feature/login --step # arrancar en el primer commit
|
|
508
|
+
# ...editar, y después...
|
|
509
|
+
git review next # bancar cambios, pasar al siguiente
|
|
510
|
+
git review next # ...hasta "no more commits"
|
|
511
|
+
git review finish # re-aplicar todos tus cambios sobre el tip
|
|
512
|
+
|
|
513
|
+
# Elegir un commit de inicio explícito:
|
|
514
|
+
git review start feature/login --from a1b2c3d
|
|
515
|
+
|
|
516
|
+
# Revisar la rama en la que ya estás (omitiendo el nombre):
|
|
517
|
+
git switch feature/login && git review start # contra la base configurada
|
|
518
|
+
git review start --base develop # ...o contra una base explícita
|
|
519
|
+
|
|
520
|
+
# Comparar contra un tag en vez de una rama:
|
|
521
|
+
git review start feature/login v1.0
|
|
522
|
+
|
|
523
|
+
# Comparar dos releases en modo lectura:
|
|
524
|
+
git review compare v1.0 v2.0
|
|
525
|
+
|
|
526
|
+
# Revisar tu propia rama local antes de pushear, offline:
|
|
527
|
+
git review start feature/login --local
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
## Requisitos
|
|
531
|
+
|
|
532
|
+
- Git 2.23+ (usa `git switch`). Se recomienda Git 2.38+: excluir el contenido de
|
|
533
|
+
la base mergeado dentro del PR usa `git merge-tree --write-tree`, y en git más
|
|
534
|
+
viejo ese paso se saltea (el contenido de la base mergeado aparecería en
|
|
535
|
+
`--delta`/`--from`).
|
|
536
|
+
- Un remoto llamado `origin` (o el que configures con `reviewworkflow.remote`).
|
|
537
|
+
- Una shell POSIX. En Linux y macOS es la de por defecto. En Windows los comandos
|
|
538
|
+
corren bajo Git Bash o WSL, no en `cmd.exe` ni PowerShell.
|
|
539
|
+
|
|
540
|
+
## Contribuir
|
|
541
|
+
|
|
542
|
+
Reportes de bugs, fixes e ideas son bienvenidos. Mirá
|
|
543
|
+
[CONTRIBUTING.md](CONTRIBUTING.md) para cómo correr los tests y el proceso de
|
|
544
|
+
release.
|
|
545
|
+
|
|
546
|
+
## Licencia
|
|
547
|
+
|
|
548
|
+
[MIT](LICENSE) © EzeVillo
|