2009-05-28 19 views
17

En mi situación, tengo un programa que analiza los archivos de entrada de datos y produce otros archivos de salida de datos. Quiero controlar la versión del programa, y ​​quiero controlar la versión de los archivos de datos, y como cuestión de preferencia, quiero tener la copia de trabajo de los archivos de datos dentro de la copia de trabajo del programa. Quiero que el programa y los datos se controlen por separado para reducir el "ruido". El programa no tiene una dependencia en los archivos de datos.¿Los submódulos de Git son la única forma segura de tener copias de trabajo dentro de las copias de trabajo?

Si uso los submódulos de git, cuando suceden cosas en el directorio de datos (creo que las actualizaciones son confiadas), el control de versiones del programa indica que hay una actualización con el submódulo. Lo cual sería útil si el programa dependiera de los datos, pero no es así.

En tal caso, ¿es posible tener una copia de trabajo dentro de otra copia de trabajo sin usar los submódulos de git?

Respuesta

20

Es posible simplemente "anidar" copias de trabajo en Git. Entonces, si clonas el repositorio de tu programa, dentro de eso haces un clon de tus archivos de datos, entonces puedes trabajar con ellos de manera independiente. Cuando Git realiza operaciones de archivos, busca hasta el árbol de directorios buscando un directorio .git, por lo que las operaciones de Git realizadas en el depósito de datos no afectarán al depósito del programa. Si hace esto, puede agregar el nombre del directorio de datos al .gitignore para reducir el ruido del repositorio del programa.

+0

Me encantaría escuchar esto. ¿Hay algo que podría salir mal con este enfoque? ¿O simplemente funciona? –

+3

@ChristopherJamesCalo: No conozco nada que pueda salir mal específicamente. Lo único que se me ocurre observar es si ejecuta 'git clean -f -x' en el directorio del programa, y ​​luego eliminaría todo el directorio de datos, incluso si aparece en' .gitignore'. –

+1

Suena genial. He estado usando esto mucho hoy, y parece funcionar perfectamente. ¡Gracias! –

1

Esto también es una solución útil útil para trabajar con Heroku y rieles en situaciones en las que tiene complementos que necesitan ser versionados. Actualmente, Heroku no es compatible con los submódulos de git, por lo que anidar copias de trabajo parece ser la mejor solución. En este caso, no le gustaría agregar el directorio de complementos a .gitignore, ya que en este caso no podrá cargar sus complementos al presionar a heroku, pero se la vi. Con suerte, Heroku finalmente soportará submódulos de git.

Cuestiones relacionadas