SVN atómica cometer cómo hacerlo

Donde estoy: línea de command de Linux

El problema que tengo ahora:

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

Por ejemplo: database.xml (dbname, username, password, etc.). Modifico este file en mi entorno local, y cada vez que necesito hacer un commit / checkin he enumerado manualmente todos los files / carpetas requeridos para el commit (excluyendo estos files modificados localmente).

Tal vez sea una decisión de layout errónea y database.xml tiene que eliminarse del repository y cambiarse por database.xml.template (almacenado en SVN), por lo que este file no se includeá para confirmar hasta que se ejecute svn add manualmente. ? Tal vez sea un enfoque equivocado: almacenar toda esta información dependiente del entorno en el repository; en ese caso podemos romper todo al comprometer una configuration modificada, por ejemplo …

Según tengo entendido, svn:ignore property no pudo ayudar en esta situación, ya que solo se puede usar para files que no están almacenados en el repository.

¿Cómo se puede resolver este problema?

PD: estoy usando Ubuntu y la command-line más pura para SVN.

El procedimiento "estándar" para esto es algo como esto (perdonar la syntax SVN, he estado usando Bazar ú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 comprometen,

 echo foo > someotherfile svn commit 

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

Debe almacenar una plantilla en el repository, pero no el file real que necesita modificar localmente.

De esta forma, puede rebuild un file prístino, si es necesario, sin arriesgarse a almacenar un file en el repository que no debería estar allí.

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

Mis 2 centavos: en primer lugar, debe asegurarse de que haya alguna forma (fácil) de armonizar sus routes para todos los desarrolladores involucrados en su proyecto. Esta puede ser la misma estructura de directory relativa o alguna capa delgada en su aplicación que admita algunos shell vars o tales como $ home,% USERPROFILE% etc. Esto sería mucho más conveniente en el time que dejar que cada desarrollador maneje su propia configuration no versionada y eso es lo que los IDEs intentan proporcionar también.

En general, los files de configuration de versiones están perfectamente bien para mí, es simplemente el time que un desarrollador pasó para configurar y no debe perderse por crash.