Proporcione sugerencias para usar git con svn. ¿Cuáles son sus "mejores prácticas"?¿Cómo se usa git svn?
Respuesta
Al crear el clon, utilice --prefix=svn/
. Crea nombres de ramas más agradables.
Además, no descuide los --trunk
, --tags
y --branches
argumentos cuando se hace clone
o init
.
La obtención es uno de los pasos más largos, así que configure un trabajo cron para hacer git svn fetch
en segundo plano. Esto es seguro porque la recuperación no afecta a ninguna de sus ramas de trabajo.
(información básica sobre git svn fetch
:. Este comando se ejecuta en primer lugar cada vez que haces git svn rebase
, por lo que al hacer este paso antes de tiempo, su llamada git svn rebase
por lo general será más rápido Los fetch
comando descarga SVN compromete y las pega en ramas especiales administrados por git-svn. Estas ramas son visibles haciendo git branch -r
, y si usted hizo el paso anterior, comienzan con "svn /".)
Asegúrese de que sabe cómo usar git reflog
. He tenido algunas ocasiones en las que git svn dcommit
murió (generalmente porque traté de registrar algo enorme) y mi compromiso pareció haberse perdido. En todos los casos, la confirmación se encontró fácilmente en el reflog.
Aquí hay algo que recientemente he aprendido:
- siempre lo hacen
git svn rebase
antes de hacergit svn dcommit
- cuando usted está haciendo
dcommit
, hacerlo desde una rama estacionamiento temporal - si usted (o GIT) desordenar, es mucho más fácil de recuperar con sólo la eliminación de la rama y empezar de nuevo
Cuando svn dcommit
muere a mitad de camino a través de un gran comprometerse y parece haber perdido toda su historia, do this:
cómo recuperar:
En primer lugar, .git abierta/logs/HEAD
Encuentra el hash del cometen ese es el cabecera de su repositorio git. Esperamos que pueda recuerda el mensaje de confirmación y puede entenderlo, pero debe ser bastante obvio
De vuelta en su ahora f-ed trabajando-dir:
git reset --hard < hash a partir del registro >
Esto consigue su directorio de trabajo de nuevo a donde estaba antes de que hizo un git- sVN dcommit. Entonces:
rebase git-svn git-svn dcommit
Estoy de acuerdo con el # 1, pero nunca he encontrado que haya necesitado hacer el # 2. 'dcommit' no se rompe con frecuencia, y cuando lo hace, no es difícil recuperarlo. – andy
hoy decidió que Perl podría volcar núcleo a la mitad - me dejó con mi copia de trabajo que falta muchos cambios –
Si usted tiene un gancho post-commit en el repositorio SVN que pueden rechazar las confirmaciones, entonces git svn dcommit
dejará de procesar compromete la primera vez que se rechaza una confirmación, y usted tiene que recuperar sus confirmaciones restantes de la reflog git .
En realidad, creo que el problema anterior fue causado por mi cow-orker que no ejecuta git rebase -i
correctamente al intentar corregir las confirmaciones rechazadas. Pero, gracias al reflog, ¡pudimos recuperar todo!
He estado blogueando un poco sobre cómo vivir con Subversion y Git en paralelo, y también he puesto un par de screencasts rudimentarios. Reunidos todo aquí: http://www.tfnico.com/presentations/git-and-subversion
Voy a tratar un resumen:
- ir a por ella! No duele probarlo :)
- Comience con un pequeño proyecto de Git para aprender primero.
- Manténgase en la línea de comandos hasta que la domine. Las herramientas GUI pueden confundirte.
- Si es posible, realice migraciones únicas, deje el SVN atrás, un proyecto a la vez, empezando por los pequeños.
- Si tienes que vivir con un Git y SVN juntos, ten en cuenta que debes renunciar a muchas ventajas que obtienes de Git, como sucursales, pero obtienes los beneficios "locales" (escondite, índice, velocidad).
- Si usted es un usuario de Git, simplemente haga el git-svn rebasing y commodifique usted mismo.
- Si tiene varios colaboradores de Git, configure un Git/SVN central que solo saque de SVN, mientras que cada usuario de Git se compromete directamente con SVN. More info here.
- 1. ¿Se requiere git svn rebase antes de git svn dcommit?
- 2. ¿Cómo se configura svn ignore settings con git svn?
- 3. usando git para clonar un proyecto CodePlex que usa SVN
- 4. ¿Cómo se usa Git con varias computadoras?
- 5. ¿Cómo se compara Mercurial con GIT y SVN?
- 6. git-svn branching: cómo configurar git config
- 7. Cómo actualizar la versión de SVN utilizada por git-svn
- 8. El repositorio svn que importé en git usando git-svn se movió
- 9. ¿Cómo se pueden indicar archivos para ignorar en svn cuando se usan git y el puente git-svn?
- 10. `git svn rebase` vs` git rebase trunk`
- 11. Convierta un checkout SVN para usar git (git-svn)
- 12. ¿Cómo decide git qué versión de svn usar en git-svn?
- 13. svn "git add" alternative?
- 14. GIT y SSH, ¿qué tecla se usa?
- 15. ¿Cómo se evalúa ignore-paths en git svn?
- 16. git-svn cambio de contraseña
- 17. ¿Es suficiente git push --mirror como una copia de seguridad para el repositorio que se usa con git-svn?
- 18. git-svn display svn repository url
- 19. git-svn fusionar 2 ramas svn
- 20. git-svn ramificación
- 21. Resolviendo conflictos Git Svn
- 22. Reanudar clon git-svn
- 23. Clonar varios proyectos SVN con git-svn
- 24. ¿Cómo mantengo un svn: external actualizado usando git-svn?
- 25. ¿Cómo revertir una rama git-svn a SVN HEAD?
- 26. Cómo cambiar los repositorios svn usando git-svn?
- 27. Cómo importar ramas y etiquetas svn en git-svn?
- 28. ¿Tiene Git-Svn Store Svn contraseñas?
- 29. ¿Cómo resolver un conflicto con git-svn?
- 30. Espejo git svn a
¿Puede explicarme algo más sobre el truco de búsqueda? ¿Qué hace eso? ¿Lo ejecuta una y otra vez en el fondo? Habiendo hecho eso, ¿cómo se obtienen los cambios en su sucursal? –
Ok, agregué información extra sobre fetch – andy