2010-02-19 4 views
5

Me gustaría que una cadena específica en un archivo específico se oculte cada vez que confirme cambios en ese archivo.Ocultar una cadena en un archivo antes de cometer git

En realidad, tengo una URL en un archivo que no debe ser pública en un repositorio remoto. ¿Hay alguna forma de ocultarlo utilizando anzuelos precompromiso y postcompromiso o algo similar?

Actualmente estoy trabajando con un repositorio de git, pero sería bueno saber cómo hacerlo con svn.

Gracias, Simão

Respuesta

4

Si realmente debe tener ese archivo bajo control de versión, use un git attribute filter driver (vea también GitPro book).

un controlador de filtro se compone de un comando clean y un comando smudge, cualquiera de los cuales puede ser dejado sin especificar.
En checkout, cuando se especifica el comando smudge, el comando se alimenta del objeto blob desde su entrada estándar, y su salida estándar se utiliza para actualizar el archivo worktree.
De forma similar, el comando clean se usa para convertir los contenidos del archivo worktree en el momento del check-in.

De esa manera, la secuencia de comandos (una versión privada, sólo en tu repositorio, no se maneja por Git) que hace referencia la mancha puede reemplazar la URL codificada, mientras que el guión limpio restablecerá su contenido a una URL codificada .
Una versión pública de la misma secuencia de comandos, administrada por git y empujada a todas partes, haría ... nada y mantendría la URL ofuscada.

alt text

+0

Gracias. Eso es lo que estaba buscando. – simao

7

Se podría mantener esa cadena en un archivo separado (como un archivo de recursos, si su entorno es compatible con eso), y no poner ese archivo bajo control de versiones.

+0

Me gustaría hacer esto también. Es más limpio tanto en términos de no tener que usar git hooks como en tener un lugar central para almacenar información confidencial. –

+0

+1. Esa sería la forma más fácil, tanto para el sistema de control de origen como para mantener la configuración específica de la instalación. Pero al menos con git, debería haber una manera de hacer que el plan original funcione, porque git (a diferencia de svn) permite confirmaciones parciales de archivos. – Thilo

+0

Sí, en realidad una solución simple como esta funcionaría. Gracias :) – simao

Cuestiones relacionadas