2011-01-05 4 views
5

Tengo un archivo con cambios locales que nunca debería volver a sincronizar con el repositorio porque es solo para mi instalación local. Pero si ese mismo archivo se cambia en el repositorio, quiero que esos cambios actualicen mi copia local, de todos modos.Subversion: Cómo realizar cambios locales en un archivo * nunca * check in, pero ¿se sincroniza con el control remoto de todos modos?

Por el momento, el archivo en cuestión siempre aparece en la lista de cambios cuando quiero registrar mis cambios, y tengo que excluirlo manualmente del check-in. ¿Cómo lo hago para poder actualizar, con la restricción anterior en su lugar?

Gracias :)

+0

Esta es una pregunta bastante común con Subversion - ver http://stackoverflow.com/questions/233441/svn-how-do-i-maintain-my-local-config-blah-file/233479#233479. – Avi

+0

@Avi: a pesar de que se ve de manera similar, no es lo mismo ... – zerkms

+0

Ok, acepto que es diferente. Todavía parece ser una pregunta bastante común, sin embargo, no puedo encontrar los duplicados exactos en este momento. – Avi

Respuesta

0

Se puede crear un gancho pre-commit, que comprueba que el archivo está comprometido y aborta si así se cometen. .

http://wordaligned.org/articles/a-subversion-pre-commit-hook

Aquí se puede ver la muestra de dicho gancho (que comprueba si hay fichas en los archivos comprometidos Todo lo que necesita hacer - es escribir el guión similar que comprueba si existe ese archivo en la lista de archivos cambiados).

+0

Supongo que quiere que otros puedan realizar el check-in, no él mismo :) – Raghuram

+0

@Raghuram: entonces no es posible ;-) – zerkms

-1

svn ignorar la propiedad ayudaría en este caso. Check this link

+0

No ayudaría en ** este ** caso. – zerkms

8

Si está utilizando TortoiseSVN, puede agregar ese archivo a la lista de cambios 'ignorar en la confirmación'.

Esto es diferente a svn: ignorar. El archivo se versionará (es decir, existirá en el repositorio), recibirá actualizaciones al actualizar, pero, cuando realice la confirmación, este archivo se mostrará en una lista separada y se desactivará de manera predeterminada. Todavía puede confirmar el archivo, pero es mucho más difícil cometerlo accidentalmente.

Utilizo esta característica para archivos de configuración de base de datos que necesitan ser modificados localmente pero no comprometidos.

Véase la documentación aquí: (búsqueda de ignore-on-commit) http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-changelists.html http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-commit.html

+0

No vi nada en la publicación original que Neils estaba usando TortoiseSVN? – jgifford25

+0

@ jgifford25: If = condicional. Creo que la respuesta es útil, a pesar de ser específico del cliente. Es más útil que simplemente señalando la propiedad svn: ignore, que resuelve un problema ligeramente diferente. – tato

+0

Bueno, eso resolvió mi problema. Estuve buscando esta característica por mucho tiempo. – abbas

0

Esto no es sencillo. Hay dos preguntas más o menos idénticas en otros lugares con algunos goodanswers.

También podría considerar escribir un script de shell que cree un parche en su versión usando svn diff; mueve tu versión; hace un svn up; y parchea la nueva versión actualizada.

Cuestiones relacionadas