Revup proporciona herramientas de línea de comandos que permiten a los desarrolladores iterar más rápido en cambios paralelos y reducir la sobrecarga de la creación y el mantenimiento de las revisiones de código.
revup amend
y revup restack
Guarde el tiempo reemplazando los rebases lentosLa revupa requiere Python 3.8 o superior y GIT 2.43 o más. Revup funciona con Linux, OSX y Windows (pruebas limitadas).
Siga las instrucciones aquí para obtener la última versión GIT para su sistema operativo. Revup utiliza banderas solo presentes en versiones Git más nuevas.
Instale con pip
o su Administrador de paquetes favorito.
python3.8 -m pip install revup
Verifique que la instalación tuvo éxito al mostrar la página de ayuda.
revup -h
También puede construir desde la fuente para obtener las últimas actualizaciones.
git clone https://github.com/Skydio/revup.git && cd revup
make deps && make package && make install
Este tutorial lo guiará a través del uso de funciones básicas de revupa.
Clone un repositorio de sandbox bifurcando una revupa, creando un nuevo repositorio o usando algún otro repositorio que posea. La creación de PRS de prueba puede ser spam, así que no hagas el tutorial sobre los reposadores de otras personas.
git clone https://github.com/ < your-name > /revup.git && cd revup
En la primera ejecución, deberá configurar las credenciales de GitHub. Cree un token de acceso personal aquí y marque la casilla para obtener "permisos de repositorio completos". Revup necesita esto para crear y modificar solicitudes de extracción. Luego corre
revup config github_oauth
y copie y pegue la OAuth en el aviso.
Haga sus dos primeros confirmaciones que se convertirán en dos solicitudes de extracción separadas. Tenga en cuenta el "Tema:" Etiqueta en el mensaje de confirmación: esto es lo que hace que la revupa reconozca y actúe en una confirmación. Cada tema nombrado por separado se convertirá en una nueva solicitud de extracción.
echo meh > foo ; git add foo
git commit -m " My first revup foo " -m " Topic: foo "
echo peh > bar ; git add bar
git commit -m " My first revup bar " -m " Topic: bar "
revup upload
¡Has subido tus primeros cambios de revupa! Observe cómo en Github, ambas ramas se dirigen a 'Main'. Esto les permite fusionarse de forma independiente.
Debajo del capó, la revupa crea y empuja estas ramas para usted, rastreando y administrando las dependencias según sea necesario.
Ahora haremos una nueva reseña que es relativa a "Foo". La etiqueta "relativa" asegurará que la nueva revisión se apunte a la rama correcta.
echo deh >> foo ; git add foo
git commit -m " My second revup foo " -m " Topic: foo2 " -m " Relative: foo "
revup upload
Con este modelo simple pero poderoso, puede cargar cambios independientes y dependientes a la vez.
Ahora actualicemos una solicitud de extracción.
echo heh >> bar ; git add bar
# Either
revup amend HEAD~ --no-edit # Specify a commit to amend
# or
revup amend bar --no-edit # Specify a topic name to amend
revup upload
revup amend
facilita la modificación de las comodidades en su historial. También tiene otras opciones para modificar las revisiones:
git rebase --interactive
junto con git commit --amend
Use git pull --rebase
para extraer cambios. No use git merge
o git pull
sin Rebase, ya que esto crea una confirmación de fusión.
Por defecto, la revupa no se cargará si extrae pero no ha realizado cambios en una confirmación. Para anular esto y cargar siempre, ejecute revup upload --rebase
.
[pull]
rebase = true
[rebase]
autoStash = true
Recomendamos agregar lo anterior a .gitconfig
para facilitar la extracción y la rebase.
Esta es una introducción no exhaustiva a algunas características de revupa más útiles.
Para obtener una descripción completa de las características, consulte los documentos o ejecutar revup -h
o revup upload -h
para ver los documentos en formato man
.
Para contribuir a proyectos a los que no tenga acceso a empuje, la revupa se puede configurar para impulsar una bifurcación mientras crea una solicitud de extracción en el proyecto principal.
Agregue los controles remotos Git tanto para el original como para el tenedor.
$ git remote -v
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (fetch)
origin https://github.com/ORIGINAL_OWNER/REPO_NAME.git (push)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (fetch)
myfork https://github.com/YOUR_USERNAME/REPO_NAME.git (push)
Al cargar, pase el control remoto para crear la solicitud de extracción como --remote-name
y el control remoto bifurcado como --fork-name
.
revup --remote-name origin --fork-name myfork upload
Revup también puede agregar revisores, cesionarios y etiquetas para extraer solicitudes. Agregue las etiquetas apropiadas a cualquier compromiso en un tema.
Reviewers: alice, bob
Assignees: eve
Labels: bug, feature, draft
Los nombres de usuario de GitHub se pueden abreviar y coincidirán con el nombre más corto con el prefijo dado.
Las etiquetas deben coincidir exactamente. El draft
de la etiqueta es especial y hará que una solicitud de extracción sea un borrador si está presente y no se elimina el borrador si se elimina.
La revupa normalmente detecta automáticamente su rama base local y la usa para enumerar las comisiones y las revisiones de objetivos. Puede optar por apuntar a cualquier tema en particular a otra rama o incluso varias ramas, en cuyo caso la revupa los usará como la rama base (y creará múltiples solicitudes de extracción en el último caso).
A fix for multiple branches
Topic: fix
Branches: main, rel1.1
También puede especificar la rama base en la línea de comandos, aunque esto generalmente no es necesario a menos que esté trabajando en una rama que el autodetector no conoce (consulte la configuración de repo a continuación).
revup upload --base-branch custom-branch-name
Revup agregará 2 comentarios en cada solicitud de extracción para proporcionar funciones útiles para usuarios y revisores. Estos están habilitados de forma predeterminada y se actualizan automáticamente a medida que cambia la solicitud de extracción.
El gráfico de revisión proporciona enlaces y títulos a todas las solicitudes de extracción locales que tienen una relación relativa con la solicitud de extracción actual, incluida cualquiera de las que depende o que dependa de ello. Esto le permite navegar rápidamente entre las solicitudes de extracción en una cadena.
La tabla Patchsets proporciona un historial de cargas para una solicitud de extracción dada, así como enlaces y resúmenes de la diferencia entre cada carga. En particular, la revupa maneja especialmente el caso en el que se vuelva a subir y le mostrará una diferencia con los archivos ascendentes excluidos.
Revup es altamente configurable utilizando un formato de archivo de configuración estándar. Cada indicador también es una opción de configuración, por lo que los usuarios pueden obtener el comportamiento exacto que necesitan.
Los indicadores especificados en la línea de comandos tienen prioridad, seguido de config en ~/.revupconfig
, seguido de .revupconfig
en el repositorio actual.
La base USECSE primaria para el archivo de configuración en REPO es configurar el nombre de la rama principal y las ramas de liberación.
Por ejemplo, si su rama principal es master
y las ramas de lanzamiento se nombran como rel1.1
, comprometa lo siguiente a .revupconfig
en la raíz de repo.
[revup]
main_branch = master
base_branch_globs =
rel[1-9].[0-9]
rel[1-9].[0-9][0-9]
La configuración del usuario en ~/.revupconfig
ahorra tiempo al predeterminar los indicadores más utilizados.
Por ejemplo, después de acostumbrarse al flujo de trabajo, un usuario podría no necesitar la verificación de confirmación. Agregar las siguientes líneas será la misma que ejecutar con --skip-confirm
.
[upload]
skip_confirm = True
(también conocido como "Diffs apilados", "Patch Based", etc.)
Si ha utilizado herramientas como listas de correo Gerrit, Phabricator o GIT, es posible que ya esté familiarizado con este estilo de desarrollo. Si desea leer más, aquí hay algunas discusiones bien escritas sobre el tema.
Revup se inspira en parte por esta lista no exhaustiva de proyectos de código abierto que también admiten un flujo de trabajo basado en parches:
revup upload
pero no presiona ni crea revisiones.revup amend
y el backend de lo anterior con un sistema de fusión que maneja los conflictos ¡Gracias por contribuir a la revupa! Puede comenzar con su propia idea o ver la página de problemas para obtener ideas que otras personas están entusiasmadas.
Al informar problemas:
revup -v
para proporcionar registros detallados. Skydio publica Rackdio, pero no es un producto Skydio oficialmente compatible.