Comentarios en: Organizando las ramas en carpetas https://aprendegit.com/organizando-las-ramas-en-carpetas/ Información y experiencias sobre el uso de git Thu, 25 Jul 2024 14:51:35 +0000 hourly 1 https://wordpress.org/?v=6.6.1 Por: admin https://aprendegit.com/organizando-las-ramas-en-carpetas/#comment-371 Thu, 14 Mar 2013 12:03:59 +0000 https://aprendegit.com/?p=458#comment-371 En respuesta a Rubén.

Existe otra forma de hacer esto que no requiere el uso de atributos. Consiste en lo siguiente:

  • Creas un fichero settings_ref.php con la configuración de referencia
  • Incluyes este fichero en el repositorio
  • Incluyes settings.php en .gitignore

Cuando alguien clona el repositorio, debe copiar settings_ref.php a settings.php y proceder a configurar el proyecto. De esta forma puedes tener tantos clones como necesites (producción, testing, pre-producción, tu máquina, la de tus compañeros de equipo, etc) cada uno con su settings.php. Toda configuración que necesite ser guardada en el repositorio se almacena en settings_ref.php.

De esta forma, además, evitamos que por error se sobreescriba el settings.php al estar incluido en el .gitignore.

Y gracias por la información que has puesto antes sobre el driver, es la primera vez que lo veo.

]]>
Por: alfonso https://aprendegit.com/organizando-las-ramas-en-carpetas/#comment-370 Thu, 14 Mar 2013 11:55:46 +0000 https://aprendegit.com/?p=458#comment-370 En respuesta a Rubén.

Hola Rubén:

Copio aquí la respuesta que te di ayer por twitter a toda prisa:

Hola. Creo que el problema puede estar en los * de la ruta la fichero. Si la expansión funciona como en .gitignore quizás ese sea el problema. Prueba a meter un fichero .gitattributes en la carpeta en la que están los settings (sites/CARPETA) y dentro de ese .gitattributes pon

settings*.php, merge=ours

Así eleminas el * de la ruta. Otra opción es que pruebes con sites/**/settings*.php.

]]>
Por: Rubén https://aprendegit.com/organizando-las-ramas-en-carpetas/#comment-369 Thu, 14 Mar 2013 11:00:13 +0000 https://aprendegit.com/?p=458#comment-369 En respuesta a Rubén.

Finalmente lo he conseguido en parte siguiendo tu consejo, simplificando el .gitattributes poniendo el fichero en el mismo directorio que el settings.php y para no pelearme con rutas, ya que es un fichero muy concreto lo he dejado así: settings.php merge=ours

Sin embargo no ha sido suficiente y he tenido que configurar un driver de merge, de esto ayer no tenía ni conocimiento 😛

Poniendo esto en el .git/config


[merge "ours"]
name = "Keep ours merge"
driver = true

Ha empezado a funcionar, supongo que tiene sentido que sin esto «no entiende» la palabra «ours», pero pensaba que el «ours» y el «theirs» eran palabras reservadas o algo, supongo que SourceTree nos abstrae un poco de esto 😛

Gracias por tu ayuda!

]]>
Por: Rubén https://aprendegit.com/organizando-las-ramas-en-carpetas/#comment-361 Wed, 13 Mar 2013 12:26:53 +0000 https://aprendegit.com/?p=458#comment-361 Hola Alfonso, en primer lugar déjame felicitarte por el blog es un verdadero repositorio de lujo en cuanto a lo que información y documentación de Git respecta.

Te quería hacer una pregunta un tanto concreta de Git, y no sé bien donde dejártela, lo hago por aquí para que cuando lo resolvamos los lectores puedan aprovechar el feedback.

Verás, estoy en un escenario bastante común. Tengo varias ramas: develop, uat, master… de un website. Entonces tengo un fichero settings.php en el que, entre otras cosas, se guardan los datos de conexión a la Base de Datos.

Quiero versionar este fichero, pero necesitaría que cada entorno mantuviera su versión y al hacer merges entre ramas no se «machacara». El gitignore no me vale, porque pierdo el versionado del fichero.

He investigado un poco y parece que los gitatributte pueden servir: http://librosweb.es/pro_git/capitulo_7/atributos_de_git.html pero no acabo de conseguir lo que quiero, y cuando voy a hacer un merge de develop a uat me detecta diferencias y me obliga a comitear cambios en el settings antes de mergear.

Mi fichero .gitattribute contiene sólo esto: sites/*/settings*.php merge=ours

Por lo general uso SourceTree pero no tengo problema moviéndome por terminal, podrías echarme algo de luz con el asunto?

Muchas gracias!

]]>