2011-01-21 10 views
11

¿Hay alguna manera de utilizar git para exportar/descargar mi base de datos de desarrollo MySQL que se utiliza en mi código en una confirmación o de otra manera a través de git para que siempre que clono mi proyecto, siempre tenga una copia actual de la base de datos ?Git: Exportar base de datos MySQL en commit?

Si no, siempre puedo exportar la base de datos y agregarla a la fuente, me preguntaba si git tenía la capacidad de hacer esto casi como un gancho.

+0

¿De verdad está diciendo que quiere copiar toda su base de datos después de * cada * confirmar? – GolezTrol

+1

Esto sería una solución de escape, pero puede obtener más información sobre los ganchos de git en el excelente libro de Pro Git que está disponible en línea. Aquí está el enlace directamente a ese capítulo: http://progit.org/book/ch7-3.html – coreyward

+2

Tal vez no se comprometa, pero después de cada inserción (algo que solo hago cuando termino con una rama de publicación). Supongo que githooks (http://www.kernel.org/pub/software/scm/git/docs/githooks.html) es mi mejor apuesta. – drewrockshard

Respuesta

16

Terminé usando los ganchos git como lo anticipé. Creé el gancho pre-commit y le agregué lo siguiente:

#!/bin/bash 
DBUSER="sysbackup" 
DBPASS="password" 
DB="database-name" 
SCHEMAPATH="DBSchema" 

mysqldump -u $DBUSER -p$DBPASS $DB > $SCHEMAPATH/$DB.sql 
git add $SCHEMAPATH/$DB.sql 
exit 0
+0

Gracias por esta solución. ¿Para qué es 'exit 0'? AFAIK, cuando termina el guión, sale con el estado 0, ¿no? – leemes

+0

Le dice al intérprete de comandos que MI secuencia de comandos sale con un valor de 0. – drewrockshard

+0

Sí, pero ¿no devuelve cada secuencia de comandos un código de salida de 0 cuando no hay una instrucción 'exit'? Lo que quiero decir: AFAIK no es necesario llamar explícitamente a 'exit 0' al final de cualquier script. – leemes