SVN: ¿Cómo mantengo mi archivo config.blah local?
Pregunta
En el servidor SVN, hay un archivo llamado config.conf
. Tengo una versión local llamada lo mismo (en el mismo lugar). ¿Cómo puedo asegurarme de que mi configuración local no se sobrescriba ni se registra?
Mientras estoy aquí, ¿la respuesta es diferente para un directorio?
Estoy usando Tortoise SVN, pero las respuestas de la línea de comandos son geniales.
¡Gracias!
[Lo siento si esta pregunta básica se ha hecho antes ... Lo busqué pero no la encontré.]
Solución
SVN siempre pensará que ese archivo es parte del repositorio si le asignas el mismo nombre y lo pegas en el mismo directorio. Tus opciones son
- Cámbiele el nombre (tal vez escriba un script de shell en
mv config.conf config.conf.theirs & amp; & amp; mv config.conf.mine config.conf
y luego ejecute su aplicación) - Muévelo. Tal vez agregue algo de lógica a su aplicación que verifique si config.conf se encuentra en un directorio local específico del usuario y luego usa el config.conf predeterminado si no se encuentra ninguno
Otros consejos
TortoiseSVN tiene una buena respuesta para la mitad de este problema: ignore-on-commit
Esto le impide cometer accidentalmente " solo local " cambia, pero no resuelve el problema al actualizar accidentalmente un archivo modificado localmente.
Consulte esta publicación del blog para obtener información detallada sobre cómo:
http: //blog.baljeetsingh. net / 2009/02 / tips-tricks-svn-ignore-on-commit.html
- exclúyalo del repositorio con svn: ignore (primero deberá eliminarlo del repositorio)
- mantener una copia en config.conf.default con valores de marcador de posición. Puede mantener la copia predeterminada en el repositorio.
- use config.conf como de costumbre, subversion no lo verá más
Gracias a todos. Pensé que Eoin podría estar enojado, pero en realidad es cierto. No puede ignorar un archivo que está en el control de versiones.
Según los documentos de la tortuga
Ignorar elementos versionados
Los archivos y carpetas versionados nunca pueden ser ignorado, esa es una característica de Subversión. Si versionó un archivo por error, lea la sección llamada & # 8220; Ignorar archivos que ya están versionado & # 8221; para obtener instrucciones sobre cómo & # 8220; conversión & # 8221;
Y de los documentos SVN
Tengo un archivo en mi proyecto que cada el desarrollador debe cambiar, pero yo no quiere que esas modificaciones locales sean alguna vez comprometido. ¿Cómo puedo hacer 'svn commit' ignorar el archivo?
La respuesta es: no pongas ese archivo bajo control de versiones. En cambio, pon un plantilla del archivo bajo versión control, algo como " file.tmpl " ;.
Luego, después del 'svn inicial pago ', haga que sus usuarios (o su sistema de compilación) haga una copia normal del sistema operativo de la plantilla al nombre de archivo apropiado, y haga que los usuarios personalicen la copia. los el archivo no está versionado, por lo que nunca estar comprometido Y si lo deseas, puedes agregar el archivo a su directorio principal svn: ignora la propiedad, por lo que no aparecer como '?' en el 'estado de svn' comando.
Esto es terriblemente molesto ... Supongo que tendré que tener cuidado con ese archivo y hacer una copia de seguridad de mi propia configuración (que puedo ignorar).
Gracias a todos por sus respuestas.
Puedes agregar un atributo svn-ignore: a tu carpeta local que excluya config.conf o incluso * .conf
Pero creo que tendría que excluir completamente este archivo de SVN, es decir, si ya se ha registrado en el repositorio, primero deberá eliminarlo del repositorio
Ignorar el archivo debería ayudarte:
http://tortoisesvn.net/docs/release/TortoiseSVN_en /tsvn-dug-ignore.html
Cuando hay una subversión con archivos de configuración, he encontrado muy útil tener un tronco completo dedicado a él. ¿Por qué? La mayoría porque simplemente puede tener dos copias de repositorio local, una para usos locales, una para cambios remotos.
Me gusta esto:
/ workdir / configuration [es un enlace a / workdir / conf_local]
/ workdir / conf_local [mantener la configuración local actualizada pero no cambiar mi configuración]
/ workdir / conf_remote [siempre actualizado con datos remotos, así puedo confirmar los cambios]
No sé qué tipo de configuración tiene, o si esto es aplicable a cualquier idioma que esté utilizando, pero esta es la forma en que lo hago con sitios web y PHP.
Primero, crea una configuración predeterminada, que probablemente tiene valores ingenuos que no funcionarán para el 90% de las configuraciones, pero le da una referencia de qué valores hay y qué se puede configurar realmente. Este script generalmente se llama ' config.default.php
' o algo similar. Al final de este script hay algo que sintonizar con:
if (file_exists("config.php")) require "config.php";
Lógica simple. Si hay una anulación de usuario para el archivo de configuración, luego cárguelo y deje que anule lo que sea necesario. Luego, simplemente mantenga este archivo de configuración de usuario ignorado a través de los métodos ya explicados en todas las máquinas de desarrollo, y cualquier máquina de producción que mantenga un pago de svn por cualquier razón. Esta es una configuración muy flexible, y se podrían configurar procedimientos similares para la mayoría de los idiomas / entornos.
como señaló Scrappydog
Puede usar / crear diferentes listas en el cuadro de diálogo de confirmación
admite la lista ignorar sobre confirmación , de esta manera los archivos que se encuentran debajo de esta lista no serán visibles.
puede consultar este enlace de blog para más detalles.
http: //blog.baljeetsingh .net / 2009/02 / tips-tricks-svn-ignore-on-commit.html