Pregunta

Dónde estoy: línea de comando de Linux

El problema que tengo ahora:

A veces no pude realizar confirmaciones atómicas (que consisten en todas las modificaciones necesarias para un ticket / tarea en particular), porque tenemos algunos archivos en el repositorio, cuyos contenidos varían en los entornos de desarrollo local.

Por ejemplo: database.xml (nombre de usuario, nombre de usuario, contraseña, etc.). Modifico este archivo en mi entorno local, y cada vez que necesito realizar una confirmación / registro, enumero manualmente todos los archivos / carpetas necesarios para la confirmación (excluyendo estos archivos modificados localmente).

Tal vez sea una decisión de diseño incorrecta y database.xml debe eliminarse del repositorio y cambiarse por database.xml.template (almacenado en SVN), por lo que ¿Este archivo no se incluirá para confirmar hasta que ejecute manualmente svn add ? Tal vez sea un enfoque incorrecto, para almacenar toda esta información dependiente del entorno en el repositorio, en ese caso, podemos romper todo al cometer una configuración modificada, por ejemplo ...

Tal como lo entiendo, la propiedad svn: ignore no pudo ayudar en esta situación, ya que solo se puede usar para archivos que no están almacenados en el repositorio ...

¿Cómo se puede resolver este problema?

P.S .: Estoy usando Ubuntu y en su mayoría línea de comando pura para SVN.

¿Fue útil?

Solución

El " estándar " el procedimiento para esto es algo así (perdonando la sintaxis de SVN, he estado usando Bazaar últimamente):

echo config > database.xml.template
svn add database.xml.template
svn ignore database.xml
svn commit

Luego, en la máquina de desarrollo de cada persona:

svn checkout
cp database.xml.template database.xml
...edit database.xml...

Y cuando se comprometan,

echo foo > someotherfile
svn commit

el archivo database.xml no se agregará a Subversion.

Otros consejos

Debería almacenar una plantilla en el repositorio, pero no el archivo real que necesita modificar localmente.

De esta manera puede reconstruir un archivo original, si lo necesita, sin arriesgarse a almacenar un archivo en el repositorio que no debería estar allí.

Y no, svn: ignore no te ayudará aquí.

Mis 2 centavos: en primer lugar, debes asegurarte de que haya alguna forma (fácil) de armonizar tus caminos para todos los desarrolladores involucrados en tu proyecto. Esta puede ser la misma estructura de directorios relativa o alguna capa delgada en su aplicación que admita algunas vars de shell o como $ home,% USERPROFILE% etc. Esto sería mucho más conveniente con el tiempo que dejar que cada desarrollador se encargue de su propia configuración sin versiones y eso es lo que los IDEs también intentan proporcionar.

En general, versionar archivos de configuración está perfectamente bien para mí, es simplemente el tiempo que un desarrollador dedica a configurar las cosas y no debe perderse por accidente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top