git-svn-ayudantes es una colección de herramientas de línea de comandos que simplifica en gran medida el uso de git para repositorios de subversion.
El objetivo principal de git-svn-ayudantes es hacer que la creación de un repositorio git local después de un svn checkout existiendo un 'pan comido'.
También aborda el uso de un único repositorio git-svn para trabajar en varias cajas de (generalmente) diferentes ramas y cambiar entre ellos.
El uso básico (Ejemplo)
Resumen ejecutivo:
> Camino cd / a / svn / repos
> Gitify
He aquí un ejemplo de sesión:
> Cd / tmp
> Svn co https://svn.plone.org/svn/plone/plone.app.form/branches/1.1 plone.app.form
Un 1,1 / setup.py
...
El registro de salida 27228 revisión.
> Plone.app.form cd
> Gitify
No repositorio git encontrado en /Users/tomster/.gitcache/.
El inicio de la clonación en la memoria caché.
Analizando svn log ...
Clonación https://svn.plone.org/svn/plone/plone.app.form/ de r10593: 27.155 en /Users/tomster/.gitcache/
Iniciada repositorio Git vacío en /Users/tomster/.gitcache/plone.app.form/.git/
...
Git sucursal "local / 1.1 'está ahora siguiendo rama svn' 1.1 ':
# En la rama local / 1.1
nada que cometen (directorio de trabajo limpio)
> Git branch
* Local / 1.1
& Nbsp; maestro
Puntos a tener en cuenta:
& Nbsp; * gitify limita la clonación de las revisiones que se encuentran en el registro de svn de la raíz del paquete (aquí https://svn.plone.org/svn/plone/plone.app.form/). Un gran ahorro de tiempo, sobre todo en grandes repositorios (como plone.collective)
& Nbsp; * gitify creado el repositorio git en ~ / .gitcache no en su lugar
& Nbsp; * gitify creó una sucursal local local / 1.1 que sigue a la (remota) svn rama 1.1 y cambió a él
Múltiples registros de salida
En la práctica se le suele trabajar con diferentes copias locales de un depósito dado, es decir, en el tronco y en una rama de la característica. Fue entonces cuando el directorio .gitcache creado anteriormente viene muy bien. Vamos a pasar nuestra salida anterior fuera del camino y crear una caja de mantenimiento que sigue tronco:
> Cd ..
> Mkdir característica-rama
> Plone.app.form mv característica rama /
> Mantenimiento mkdir
> Mantenimiento de cd /
> Svn co https://svn.plone.org/svn/plone/plone.app.form/trunk plone.app.form
Un plone.app.form / setup.py
...
& Nbsp; U plone.app.form
El registro de salida 27228 revisión.
¿Qué pasa si nos quedamos aquí gitify ?:
> Plone.app.form cd /
> Gitify
Git sucursal "local / trunk 'está ahora siguiendo svn rama' tronco ':
# En la rama local / tronco
nada que cometen (directorio de trabajo limpio)
Observe, que esta operación fue mucho más rápido, ya que ahora hemos utilizado el repositorio git existente en el directorio de caché. Esto se puede evidenciar aún más por mirar las ramas locales disponibles ahora:
> Git branch
& Nbsp; local / 1.1
* Local / tronco
& Nbsp; maestro
Advertencias
.git 'Reciclaje' de esta manera funciona (quizás sorprendentemente) bien en la práctica, pero hay que mantener en mente lo siguiente:
Todas las cajas tienen el mismo índice!
Echemos un vistazo a lo que esto significa por cambiar de nuevo a nuestra rama de la característica:
> ../../feature-branch/plone.app.form/ Cd
> Git status
# En la rama local / tronco
# Se ha cambiado pero no actualización:
# (Uso "git add / rm ..." para actualizar lo que se ha comprometido)
# (Uso "git checkout - ..." para descartar los cambios en el directorio de trabajo)
#
# Modificados: docs / History.txt
...
# Eliminado: Plone / app / form / kss / tests / test_kss.py
...
#
# Los archivos sin seguimiento:
# (Uso "git add ..." para incluir en lo que se vaya a cometer)
#
# Plone / app / form / tests / test_kss.py
Wohah! Lo que pasó es que .git ahora apunta al tronco y por lo tanto el comando de estado muestra la diferencia entre eso y nuestra sucursal como modificaciones locales, ya que eso es lo que representa el sistema de ficheros. Podemos comprobar esto mediante el uso de comando de estado subversiones:
> Svn st
¡Uf! Todo en orden! Pero ¿qué hacer con git? Hemos terminado trabajando en el tronco y queremos volver a nuestra rama de la funcionalidad, pero el índice git está todo mal ?! Simple: sólo volver a ejecutar gitify:
> Gitify
Git sucursal "local / 1.1 'está ahora siguiendo rama svn' 1.1 ':
# En la rama local / 1.1
nada que cometen (directorio de trabajo limpio)
Básicamente, eso es todo lo que necesitas recordar cuando se trabaja con múltiples registros de salida del mismo paquete: Ejecutar siempre gitify cuando se cambia entre el registro de salida
¿Qué hay de nuevo en esta versión :
- El repositorio canónico está ahora en https://github.com/collective. [ROSSP]
- Fijar el manejo al cambiar a una rama SVN que ya Git tiene una sucursal local para. [ROSSP]
¿Cuál es nuevo en la versión 0.8:
- Haga que el comando init seguir a lo largo si el repositorio SVN ha sido cambió a otra rama. Gracias a Calvin Hendryx-Parker por informar del problema. [Tomster]
¿Cuál es nuevo en la versión 0.7:
- Utilice copias completas en lugar de enlaces simbólicos para crear copias de trabajo. Esto evita el problema de tener el git svn repositorio y fuera de sincronización cuando se trabaja con varias copias del mismo repositorio y reduce considerablemente el riesgo de conflictos.
- Esto significa también, que el comando fetch ahora sólo funciona en la caché sin modificar la copia de trabajo (lo que es seguro para ejecutarse a través de crontab, por ejemplo)
- Correr gitify contra una copia de trabajo de estilo antiguo producirá un error. Simplemente borrar el enlace simbólico y volver a ejecutar remedios gitify que, sin embargo.
- Otro efecto es que el comando init ahora sólo se necesita una vez para cada copia de trabajo (que ya no es necesario volver a ejecutar el comando después de cambiar entre diferentes copias de trabajo del mismo repositorio).
- gitify por lo tanto, no hay defecto más largos para el comando init (del mismo modo ni git svn ni hacen nada w / o el suministro de una acción explícita). Además, se ha cambiado el nombre de gitify (volver) a init. [Tomster]
- Permitir la ayuda, --version a buscar comandos para ejecutar directorios fuera .svn [tomster]
¿Qué hay de nuevo en la versión 0.5:
- comando de actualización gitify Añadido, que realiza un rebase git-svn operación para el svn checkout actual, pero también se ocupa de los cambios locales no confirmadas gracelully (a diferencia de svn git svn pero como lo hace)
- Ya no utilizar el módulo de registro para los comentarios de los usuarios. Esa idea fue bastante equivocada
¿Cuál es nuevo en la versión 0.4:
- refactorizado puntos la entrada sólo utilizar gitify. El resto de los comandos son ahora sub-comandos de gitify:
- gs-COMPROMISO ha sido reemplazado con push gitify
- gs-Recuperar ha sido sustituido por gitify traer
- Uso Añadido y ayuda de salida de cada comando.
- Se ha eliminado el punto de entrada gs-clon, ya que se sólo ha usado junto con el comando principal gitify de todos modos.
- Utilice el registro adecuado en lugar de sólo la impresión a la salida estándar
- Añadido pruebas exhaustivas, incluyendo pruebas funcionales que cubren toda la actualización / cometen ciclo de clonar un repositorio SVN y cometer de nuevo a él.
¿Qué hay de nuevo en la versión 0.3.1:
- Arreglado: No utilizar alias personalizados, como podrían no estar instalados. Esto resuelve http://github.com/tomster/git-svn-helpers/issues#issue/2
- Arreglado: Explícitamente lista elementtree como dependencia Esto resuelve http://github.com/tomster/git-svn-helpers/issues#issue/1)
¿Cuál es nuevo en la versión 0.3 Beta:
- Añadido a los comandos que ayuda a cometer de nuevo a gs-commit svn y mantener git svn y sincronizados
¿Qué hay de nuevo en la versión 0.2 Beta:
- Añadido comando que ayuda a mantener la memoria caché de los gs-fetch hasta al fecha
Requisitos :
- Python
Comentarios que no se encuentran