Me gustaría crear una copia de seguridad de un repositorio git que utilizo para rastrear un repositorio svn (con git-svn). ¿Puedo usar git push - mirror para ese propósito o podría perder cualquier información relacionada con git-svn cuando necesite restaurar la copia de seguridad?¿Es suficiente git push --mirror como una copia de seguridad para el repositorio que se usa con git-svn?
Respuesta
Es posible git push
o git bundle
no incluye metadatos svn.
Pero de acuerdo con git svn
intro, podría tratar de restaurar esos metadatos svn.
(disclaimer: no probado directamente)
La reconstrucción de metadatos git-svn
Si copió el repositorio de otro lugar (por ejemplo, de repo.utsl.gen.nz
) a través de git-clone
, o si acaba de soplar de distancia, entonces no tendrás ningún metadato SVN, solo commits.
En ese caso, debe reconstruir sus metadatos SVN, por ejemplo, para mantener el tronco al día: git-svn
reconstruirá sus metadatos cuando ejecute git-svn fetch
.
$ git update-ref refs/remotes/trunk origin/svn/trunk
$ git svn init https://svn.perl.org/parrot/trunk
Using higher level of URL: https://svn.perl.org/parrot/trunk => https://svn.perl.org/parrot
$ git svn fetch
Rebuilding .git/svn/git-svn/.rev_db.d31e2699-5ff4-0310-a27c-f18f2fbe73fe ...
r17220 = 78ad11bf2f61b35e1cb32a978ab546d198be8a2e
r17219 = 605264b06d84670ec402d7a7a21c0016cae3a928
r17218 = a8ceba9c503d2be8e8e69a3df454017322906cf5
...
La clave para recordar con la reconstrucción de
git-svn
metadatos es hacer que los árbitros se parecen a que se vería desde una importación fresca; puede hacer esto usandogit update-ref
como arriba, copiando archivos refs dentro de.git/refs/
, o usandogit pack-refs
y luego editando.git/packed-refs
.
Para probar que lo hizo bien, usegit show-ref
- quizás compare con un nuevo clon de SVNHEAD
.
- 1. ¿Es suficiente "git push --mirror" para hacer una copia de seguridad de mi repositorio?
- 2. Cómo mantener un repositorio git de respaldo sincronizado con uno local, "git push --mirror" o "actualización remota git"
- 3. Mirror rsnapshot directorio de copia de seguridad
- 4. Cómo cambiar un repositorio git clonado con --bare para que coincida con uno clonado con --mirror?
- 5. Opuesto a `git push --mirror`? ¿Cómo recupero mi repo?
- 6. Copia de seguridad del repositorio local Mercurial
- 7. la restauración de la copia de seguridad repositorio git paquete
- 8. ¿Hay alguna manera de configurar el repositorio de git para que rechace 'git push --force'?
- 9. git push only parte de un repositorio
- 10. ¿Funciona `git push` como abreviatura de` git push origin newfeature`?
- 11. ¿Cómo hacer una copia de seguridad del servidor de git?
- 12. proyecto de copia de seguridad que utiliza git
- 13. ¿Es viable manejar copias de seguridad de MySQL con git?
- 14. Recuperación rota repositorio git
- 15. Commitir código roto en el repositorio con el fin de realizar una copia de seguridad
- 16. Bash Script para Push/Pull del repositorio privado de Git?
- 17. SVN - Restaurar el repositorio desde la copia de seguridad
- 18. Hacer que git push respete los permisos?
- 19. Script para hacer una copia de seguridad del repositorio svn en la red compartida
- 20. error de git "no se puede escribir el nombre de archivo sha1 ... Permiso denegado"
- 21. Hacer una copia local de un repositorio remoto de git
- 22. Estrategia de copia de seguridad para django
- 23. Git push all commits como confirmación única con mensaje personalizado
- 24. Problemas de Git con git push --todos
- 25. Git push solo para repositorios desnudos?
- 26. ¿Cuál es el resultado de `git push origin`?
- 27. ¿Cuál es la diferencia entre el origen de git push y el maestro de origen de git push
- 28. Problema con el primer compromiso con el repositorio de git
- 29. configuración del repositorio Git para el desarrollo de dos máquinas?
- 30. Agregar/confirmar al repositorio desnudo de una carpeta que no es Git
Gracias por la respuesta. El git update-ref me da el mensaje: "fatal: origin/svn/trunk: no es un SHA1 válido", pero git show-ref enumera refs/remotes/trunk para el espejo git repo. ¿Puedo omitir la actualización-ref entonces? – fawick
Tuve mejores resultados con 'git update-ref refs/remotes/trunk origin/master' _after_ the' git svn init'. Pero, a diferencia del ejemplo anterior, yo había usado 'git svn init' con las opciones -t/-b que también configuraban etiquetas y ramas, así que también tuve que configurar los refs para cada una de las etiquetas. (Obtenido ejecutando 'git show-ref' en el clon git-svn original.) – seanf