2012-03-21 19 views
14

i crea copias de seguridad de mi repositorio git como en How to backup a local Git repository? propuesta conla restauración de la copia de seguridad repositorio git paquete

git bundle create /tmp/foo-all --all 

puedo ver todas las referencias están ahí, incluyendo una referencia a distancia creado por git-svn. Ahora no puedo encontrar la manera de restaurar este paquete a un repositorio local nuevamente. Estoy bastante seguro de haberlo hecho ya una vez. Probé git-clone, pero eso me da un repositorio con mi paquete de respaldo como repositorio remoto.

También probé

git init 
git bundle unbundle /tmp/foo --all 

pero esto sólo enumera todas las referencias ...

Verificación del paquete da:

$ git bundle verify $somewhere/foo.bundle 
The bundle contains 12 refs 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/git-svn 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HEAD 
The bundle requires these 0 ref 
$somewhere/foo.bundle is okay 

Respuesta

5

paquete contiene los archivos, pero no deltas, se necesita la base para recrear el contenido del archivo. Tienes que clonar primero, desglosar más tarde. Init en lugar del clon permitido sólo en caso, en el paquete requiere 0 árbitros

No ignore git bundle verify antes de desagregación

git-bundle(1) - Linux man page

servir para comprobar que un archivo de paquete es válido y se aplicará a limpiamente el repositorio actual. Esto incluye las comprobaciones en el formato de paquete , así como la comprobación de que las confirmaciones de requisitos previos existen y están completamente vinculadas en el repositorio actual. El paquete git imprime una lista de commits faltantes, si los hay, y sale con un estado distinto de cero.

Si va a crear el repositorio, entonces se puede clonar desde el haz como si se tratara de un repositorio remoto en lugar de crear un repositorio vacío y luego tirar o ir a buscar los objetos desde el haz

+0

verificación no se presenta con referencias que faltan. – user1283719

+2

@ user1283719 'git clone foo.bundle'? –

+0

'git clone foo.bundle' crea un nuevo repositorio con mi paquete de respaldo como repositorio remoto como se indicó anteriormente. Mi repositorio local no tiene reparación, por lo que me gustaría restaurarlo desde la copia de seguridad, incluida la capacidad de usar git-svn en su rama remota. – user1283719

17

Respuesta corta:

$ git bundle verify $somewhere/foo.bundle 
$ git clone $somewhere/foo.bundle 
Cloning into 'foo'... 
Receiving objects: 100% (10133/10133), 82.03 MiB | 74.25 MiB/s, done. 
Resolving deltas: 100% (5436/5436), done. 
$ cd foo 
$ git status 
... 

Lazy Badger dijo esto, pero está en el último párrafo. :)

4

me nueva versión de Git es suficiente para hacer:

git clone bundle.file 

enteros los comandos:

mkdir ~/git 
cd ~/git 
git clone /path/to/bundle.file 

Se restaurará por completo Tu de git contenido del repositorio desnudo (que se compila, ya que es fuente normal). No necesita ningún otro archivo. El archivo del paquete es suficiente.

Es aconsejable verificar siempre Usted lote de archivos antes de desagregar los siguientes:

git bundle verify /path/to/bundle.file 
Cuestiones relacionadas