SVN: ¿Cómo mantengo mi file local config.blah?

En el server SVN, hay un file llamado config.conf . Tengo una versión local llamada la misma cosa (en el mismo lugar). ¿Cómo puedo asegurarme de que mi configuration local no se sobrescriba ni me registre?

Mientras estoy aquí, ¿la respuesta es diferente para un directory?

Estoy usando Tortoise SVN, pero las respuestas de command-line son geniales.

¡Gracias!

[Lo siento si esta pregunta básica se ha hecho antes … Miré pero no la encontré].

SVN siempre pensará que ese file es parte del repository si lo nombra igual y lo coloca en el mismo directory. Tus opciones son

  • Renombrarlo (tal vez escribir un script de shell para mv config.conf config.conf.theirs && mv config.conf.mine config.conf y luego ejecutar su aplicación)
  • Muévelo. Tal vez agregue algo de lógica a su aplicación que busque config.conf en un directory local específico del usuario y luego use el config.conf pnetworkingeterminado si no se encuentra ninguno

TortoiseSVN tiene una buena respuesta para la mitad de este problema: ignore-on-commit

Esto evita que accidentalmente realice cambios "solo locales", pero no resuelve el problema al actualizar accidentalmente un file cambiado localmente.

Echa un vistazo a esta publicación de blog para get detalles sobre cómo:

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html

  1. excluirlo del repository con svn: ignorar (primero tendrá que eliminarlo del repository)
  2. mantenga una copy en config.conf.default con valores de marcador de position. Puede mantener la copy pnetworkingeterminada en el repository.
  3. use config.conf como siempre – subversion ya no lo verá

Gracias a todos. Pensé que Eoin podría estar enojado, pero de hecho es verdad. No puede ignorar un file que está en control de versión.

De acuerdo con los documentos de Tortoise

Ignorando los artículos versionados

Los files y las carpetas con versiones nunca se pueden ignorar; esa es una característica de Subversion. Si versionó un file por error, lea la sección llamada "Ignorar los files que ya están versionados" para get instrucciones sobre cómo "deshacerlo".

Y de los documentos de SVN

Tengo un file en mi proyecto que todo desarrollador debe cambiar, pero no quiero que esos mod locales se comprometan. ¿Cómo puedo hacer que 'svn commit' ignore el file?

La respuesta es: no ponga ese file bajo control de versión. En su lugar, ponga una plantilla del file bajo control de versión, algo así como "file.tmpl".

Luego, después de la 'descarga de svn' inicial, haga que sus usuarios (o su sistema de compilation) hagan una copy normal del sistema operativo de la plantilla con el nombre de file adecuado, y haga que los usuarios personalicen la copy. El file no está versionado, por lo que nunca se confirmará. Y si lo desea, puede agregar el file a la propiedad svn: ignore del directory principal, para que no aparezca como '?' en el command 'svn status'.

Esto es terriblemente molesto … Supongo que tendré que tener cuidado con ese file y hacer una copy de security de mi propia configuration (que puedo ignorar).

Gracias a todos por sus respuestas.

Puede agregar un atributo svn-ignore: a su carpeta local que excluye config.conf o incluso * .conf

Pero creo que tendrías que excluir completamente este file de SVN, es decir, si ya se ha registrado en el repository, primero tendrás que eliminarlo del repository.

Cuando hay una subversión con files de configuration, me ha resultado muy útil tener todo un enlace dedicado. ¿Por qué? La mayoría porque simplemente puede tener dos copys de repository local, una para usos locales, y otra para grabaciones remotas.

Me gusta esto:

/ workdir / configuration [es un enlace a / workdir / conf_local]
/ workdir / conf_local [mantener la configuration local actualizada pero no anula mi configuration]
/ workdir / conf_remote [siempre actualizado con datos remotos, por lo que puedo confirmar cambios]

No sé qué tipo de configuration tiene, o si esto es aplicable a cualquier idioma que esté usando, pero esta es la forma en que lo hago con sitios web y PHP.

En primer lugar, crea la configuration pnetworkingeterminada, que probablemente tiene valores ingenuos que no funcionarán en el 90% de las configuraciones, pero le da una reference de los valores que hay y lo que realmente se puede configurar. Este script generalmente se llama ' config.default.php ' o algo similar. En la parte inferior de este script hay algo con la melodía de:

 if (file_exists("config.php")) require "config.php"; 

Lógica simple. Si hay un usuario que reemplaza el file de configuration, cárguelo y deje que anule lo que necesite. Luego, simplemente mantenga este file de configuration de usuario ignorado a través de los methods ya explicados en todas las máquinas de desarrollo, y en cualquier máquina de producción que mantenga un check de svn por cualquier razón. Esta es una configuration muy flexible, y se pueden configurar procedimientos similares para la mayoría de los idiomas / entornos.

como Scrappydog señaló

Puede usar / crear diferentes lists en el cuadro de dialog de confirmación

admite la list de ignorar en el compromiso, de esta manera los files de esta list no estarán visibles.

puedes consultar este enlace del blog para más detalles.

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html