Nota:
Las solicitudes de incorporación de cambios apiladas están en versión preliminar pública y están sujetas a cambios.
Las solicitudes de incorporación de cambios grandes son difíciles de revisar y crear cuellos de botella, especialmente cuando la inteligencia artificial le ayuda a generar un gran volumen de código en un breve tiempo. La calidad de la revisión también se degrada a medida que aumenta el tamaño de la solicitud de incorporación de cambios. Los revisores pueden esquiar el resultado, perder problemas o procrastinar y dejar la solicitud de incorporación de cambios hasta que crezca obsoleto y desarrolle conflictos de combinación.
Las solicitudes de incorporación de cambios apiladas mantienen los cambios de código grandes revisables.
A stack is a series of pull requests in the same repository where each pull request targets the branch of the pull request below it, forming an ordered chain that lands on a single branch, typically your main branch. Instead of one large pull request, you get a set of smaller pull requests. Since each pull request has its own focused diff, teammates can review and approve each layer independently.
En este tutorial se explica cómo usar las solicitudes de incorporación de cambios apiladas con agentes para crear una característica en capas revisables individualmente. En nuestro ejemplo, consideraremos cómo agregar la autenticación de usuario a una aplicación. Usaremos CLI de GitHub Copilot y la aptitud del gh-stack agente.
Prerequisites
Para usar la gh-stack aptitud con un agente, primero deberá instalar GitHub CLI y la extensión de la gh-stack CLI. Se necesita lo siguiente:
- GitHub CLI (
gh) 2.90.0 o posterior, y Git 2.20 o posterior.- Autentíquese GitHub CLI con
gh auth login.
- Autentíquese GitHub CLI con
- Un GitHub repositorio en el que puede insertar.
- CLI de GitHub Copilot instalado e iniciado sesión.
En GitHub CLI, instale la gh-stack extensión y la aptitud.
gh extension install github/gh-stack
gh skill install github/gh-stack
Nota:
En este tutorial, si prefiere ejecutar comandos de pila usted mismo en lugar de dejarlo Copilot hacer, deberá usar GitHub CLI.
1. Diseñar una pila antes de generar código
Una buena pila es como construir una casa, empezar con una base fuerte, enmarcar las paredes, instalar cableado y luego terminar el drywall. Cada capa creada depende de la siguiente. Al final, un revisor debe poder leer las solicitudes de incorporación de cambios de abajo a arriba y seguir la característica que se reúne.
- Divida la característica en capas. Cada capa debe ser un único cambio coherente que se pueda revisar por sí mismo.
- Mantenga cada capa lo suficientemente pequeña como para que su solicitud de incorporación de cambios sea una lectura rápida. Si una capa se siente como si necesita una descripción larga para revisarla, probablemente es demasiado grande.
- Decida los límites usted mismo o trabaje con Copilot en un plan. En cualquier caso, posee la forma de la pila.
- Ordene las capas por dependencia. Los cambios fundamentales van en la parte inferior. Todo lo que depende de ellos va más alto. Para la autenticación, puede ser:
- Capa 1: modelo de datos y migración
- Nivel 2: puntos de conexión CRUD
- Capa 3: middleware y guardias JWT
- Nivel 4: integración y pruebas unitarias
Ejemplos de indicaciones
Propose a layered approach to add user authentication to this app. Order the layers by dependency, keeping each layer independently reviewable.Review my planned layers and flag any that are too large or that depend on a branch above them.
2. Cree primero la capa inferior.
Inicie la pila con la base. Todo lo anterior depende de que esta capa sea correcta.
- Informá Copilot que va a crear una solicitud de incorporación de cambios apilada y le pedirá que compile la primera capa en función del plan. El agente usa la
gh-stackaptitud para crear la primera rama de la pila. - Si prefiere crear la pila usted mismo, créela directamente con
gh stack init, mediante un prefijo para mantener ordenados los nombres de rama, por ejemplo,gh stack init BRANCH-NAME-1. - Revise el cambio generado antes de continuar. Un error en la capa inferior se propaga a cada rama por encima de ella, así que asígnele una revisión antes de continuar.
Ejemplos de indicaciones
Start the pr-stack and build only the first layer: the user data model and migration.Conduct a review of the generated code and confirm this branch contains only the data model and migration, and nothing that belongs in a later layer.
3. Apilar cada nueva capa de código en la parte superior
Con la base en su lugar, cree el resto de la característica una capa a la vez.
- Pida Copilot que agregue la capa siguiente e implemplemente en el contexto de las capas siguientes. El agente agregará una rama a la parte superior de la pila y confirmará el trabajo allí.
- Si desea agregar una rama usted mismo, use
gh stack add BRANCH-NAME-NEXT. - Si una capa comienza a crecer demasiado grande, considere si se ha desfasado fuera de su plan o si realmente necesita dos capas en lugar de una.
- Cree nuevas ramas para cada capa a medida que vaya, por lo que cada rama permanece una diferencia limpia e independiente.
- Cuando esté listo para crear solicitudes de incorporación de cambios, pida Copilot que envíe la pila o, si quiere hacerlo usted mismo, use
gh stack submit. - Deje que cada solicitud de incorporación de cambios se ponga por su cuenta. Un título centrado y una descripción concisa y significativa de la capa suele ser suficiente.
Ejemplos de indicaciones
Add the next layer in a new branch on top: the CRUD endpoints that use the user model from the branch below.This branch is getting large. Suggest how it could be split into two independently reviewable layers.
4. Revise las solicitudes de incorporación de cambios antes de solicitar una revisión.
Cada capa es pequeña, lo que facilita la auto-revisión también. Haga un pase en cada rama antes de implicar a los compañeros de equipo. Los revisores deben recibir los cambios que ya confía.
- Ejecute las pruebas, linters y el análisis de código en cada rama. Le ayudará Copilot a comprobar cada capa con respecto a sus estándares antes de solicitar revisiones.
- Para conocer las técnicas para revisar los cambios generados por la INTELIGENCIA ARTIFICIAL exhaustivamente, consulte Revisión del código generado por IA.
5. Solicitar revisiones para la pila, comenzando en la parte inferior
Con las capas creadas, los revisores obtienen diferencias pequeñas en lugar de una pared grande de código.
- Si las dependencias están fuertemente integradas, pida revisiones que comiencen en la parte inferior de la pila, por lo que puede integrar los cambios en la pila antes de las revisiones posteriores.
- Si necesita revisiones de personas independientes para diferentes capas, los revisores pueden trabajar en paralelo. Una persona puede revisar el modelo de datos mientras que otra revisa los puntos de conexión y ninguno de ellos recorre toda la característica.
6. Iteración de los comentarios
Revise los comentarios sobre las capas individualmente, no toda la característica. Las pilas le permiten corregir la capa derecha en su lugar y llevar el cambio hacia arriba.
- Pida Copilot que revise la capa que un revisor marca. El agente se mueve a la rama derecha, realiza el cambio y lo confirma allí. A continuación, vuelve a base las capas anteriores para que recojan la corrección.
- Mantenga cada corrección en la capa a la que pertenece. Un cambio realizado en la rama incorrecta puede confundir y crear errores upstack.
- A medida que realice correcciones, pida Copilot que vuelva a base de las ramas anteriores y propague los cambios.
- Si desea desplazarse por la pila usted mismo, navegue por ramas con
gh stack down,gh stack upogh stack checkout BRANCH-NAME. A continuación, confirme los cambios y ejecútelosgh stack rebase --upstackpara llevar a cabo los cambios en la pila.
Ejemplos de indicaciones
A reviewer flagged that the auth service doesn't handle expired tokens. Fix that on BRANCH-NAME and test the changes.I've rebased the layers above onto this fix. Check that the branch with endpoints still works with the change and flag anything that needs updating.
7. Combinar desde la capa inferior
Una pila se combina en orden, empezando por la capa que apunta a la rama principal. Combine capas todas a la vez, o uno a uno, y GitHub vuelva a tener como destino automáticamente la siguiente capa para que apunte al principio.
- Combine la pila una a la vez trabajando desde la parte inferior hacia arriba, o desde cualquier lugar de la pila y todas las ramas debajo de la solicitud de incorporación de cambios que combine se combinarán desde la parte inferior hacia arriba.
- La diferencia de cada capa permanece exactamente igual con respecto a su elemento primario, solo los cambios base, lo que facilita la combinación de una capa a la vez sin afectar al trabajo o las revisiones en curso.
- Use la combinación automática o una cola de mezcla para que cada capa se combine tan pronto como se apruebe y se superen sus comprobaciones. No es necesario esperar a toda la pila a la vez.
Una vez que se combina la capa superior, toda la característica ha llegado. Cada pieza se revisó de forma más eficaz como un cambio pequeño y deliberado en lugar de una solicitud de incorporación de cambios grande.