2010-11-09 26 views
9

Tengo un proyecto en un repositorio. La gente pronto comenzará a verificarlo, a trabajar en él y luego a confirmar sus cambios. Pero hay un archivo dentro de ese proyecto (un elaborado archivo de configuración de mi propio diseño) del que todos simplemente deben tener una copia, pero harán cambios que nunca se volverán a registrar (nunca se deben enviar). a través de la actualización de regreso al repositorio).svn ignorar un archivo pero incluirlo en el pago

Por lo tanto, deseo que cada usuario que verifique el proyecto reciba este archivo de configuración, pero luego quiero que se ignore en todas las confirmaciones.

Lo que he leído hasta ahora me hace sentir que esto no va a ser posible. Parece que una vez que he importado el proyecto con este archivo de configuración, está bajo el control de la versión y ya no hay forma de ignorarlo más que de eliminarlo.

Espero no haber entendido bien y la solución es fácil.

¿Alguien puede ayudar?

Oh, necesito una solución de línea de comandos por favor si es posible. Gran parte del trabajo se realiza en cajas de linux sin cabezales con conexiones ssh-only.

Gracias!

EDIT: Fui con la respuesta de cdhowie. Además de crear un archivo de configuración de plantilla (por ejemplo, app.config.template) como sugiere, también uso el "svn propedit svn: ignore" para tener el nombre de archivo de configuración real (por ejemplo, app.config) ignorado en commits.

Respuesta

11

Por lo general, la forma en que lo hace es proporcionando un archivo de plantilla que el usuario o un script copiará a su lugar. Ese archivo será ignorado.

Por ejemplo, supongamos que tiene app.config como archivo de configuración. Usted cometería el suyo como app.config.template o algo similar. Los usuarios tendrían que copiar y cambiar el nombre del archivo para comenzar el desarrollo. app.config se ignoraría en SVN.

Esto no funciona limpiamente para las actualizaciones, pero es lo mejor que se puede obtener. Otra opción sería establecer restricciones de acceso en el repositorio para que nadie más pueda cambiar el app.config.

EDIT: Dije que esto no funciona limpiamente para las actualizaciones, pero pensándolo bien, si los desarrolladores están cambiando este archivo mucho de todos modos, es probable que no quieran actualizaciones de tu propia configuración. El uso de un archivo de plantilla en realidad será más fácil en sus desarrolladores, ya que pueden elegir qué cambios fusionar en sí mismos.

+0

Gracias a ambos. Entonces, lo que obtengo de estas respuestas es que el archivo ignorado deberá ser creado por algún mecanismo fuera de svn AFTER checkout, y simplemente no puede estar en el repositorio con su "nombre real", o será cometido por los desarrolladores. . –

+1

A menos que agregue restricciones de control de acceso, sí. Y si agrega restricciones, sus desarrolladores probablemente no desearán que se rechace la totalidad de su registro porque accidentalmente dejaron ese archivo seleccionado. – cdhowie

+0

@John: Exactamente. – SLaks

2

Puede modificar su proyecto para crear una versión preestablecida del archivo si no existe.

El archivo no estaría en absoluto en SVN, y cada cliente lo obtendría la primera vez que ejecutara el código.

La viabilidad de esto depende de cómo funciona su proyecto y dónde puede colocar el código ejecutable.

3

En realidad, hay dos enfoques para 'ignorar' confirmaciones en un archivo versionado. La solución 'plantilla' ya ha sido mencionada por @cdhowie. El segundo enfoque usa listas de cambios como se describe en this publicación.

svn changelist ignore-on-commit file-you-want-to-add 
Cuestiones relacionadas