2009-06-04 20 views
18

¿cómo puedo ignorar los archivos de mi svn repo sin eliminarlos también?svn ignorar sin borrar archivos?

Cuando trabajo en proyectos existentes a menudo tengo que configurar una versión local del proyecto y usar también mi base de datos local. Con drupal, por ejemplo, pago por el svn repo, cambio el archivo settings.php para que coincida con mi base de datos local, pero ahora debo asegurarme de no volver a comprometer el archivo de configuración.

¿Hay algún comando svn inteligente que solucione esto?

+0

Consulte esta pregunta y respuesta: http://stackoverflow.com/questions/69448/how-do-i-keep-resharper-files-out-of-svn –

+0

Más como http://stackoverflow.com/questions/862950/subversion-prevenir-local-modificaciones-a-uno-archivo-de-estar-cometido –

+0

Posibles duplicados: http://stackoverflow.com/questions/940057/in-subversion-how-can-i-un-hijack -a-archivo http://stackoverflow.com/questions/714307/svn-ignoring-an-already-committed-file – TJR

Respuesta

-1

SVN propedit svn: ignore ./some_path

For details see this post.

+0

He intentado esto, pero el archivo de configuración seguirá siendo confirmado –

+1

Sí, esto ignora un archivo local solamente pero no hace nada para evitar el rastreo de un archivo que ya estaba en el repositorio. – GalacticCowboy

+1

El OP ya ha declarado que * no * desea eliminar el archivo del repositorio. svn: ignorar no hace nada si el archivo todavía existe en el repositorio. – Coderer

6

De la Ayuda SVN:

Tengo un archivo en mi proyecto que cada desarrollador debe cambiar, pero yo no' t quiere que esos mods locales sean alguna vez cometidos. ¿Cómo puedo hacer que 'svn commit' ignore el archivo? **

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

Luego, después de la inicial 'svn checkout ', tienen sus usuarios (o su sistema de construcción ) hacer una copia del sistema operativo normal de la plantilla al nombre de archivo adecuado, y tienen los usuarios personalizar la copia. El archivo no está versionado, por lo que nunca se comprometerá . Y si lo desea, puede agregar el archivo a la propiedad svn: ignorar del directorio padre , por lo que no se mostrará como '?' en el comando 'svn status' .

+5

sí, eso solucionaría el problema, pero el archivo de configuración ya está bajo control svn, y no quiero cambiar eso ya que tendría que cambiarlo también en el entorno de producción, que no puedo –

+1

el archivo de producción shouldn No estar en control de fuente en absoluto si contiene información de cadena de conexión para la base de datos. mucho más seguro es tener un enlace simbólico al archivo (en una ubicación más segura que el repositorio de origen) creado por su proceso de compilación/implementación. – Jeremy

+0

Tenga en cuenta que "debería" es un verbo que "debería" aplicarse solo en mundos inhumanamente perfectos. La pregunta era sobre cómo ignorar-en-comprometer realmente en lugar de ignorar (por lo tanto eliminar físicamente) los archivos de copia de trabajo. Los BIN pueden ignorarse y eliminarse, pero los archivos de conexión no se pueden eliminar, pero deben ignorarse durante las confirmaciones. – user3285866

1

Cree una versión del archivo llamada ".template" y control de versiones que. Cuando finalice la compra, cambie el nombre y edite según lo necesite. Luego use svn propedit svn: ignore para ignorar la copia.

1

Una posible solución sería usar listas de cambios. Puede agrupar los archivos que está cambiando en listas de cambios, y luego cuando svn commit, especifica la lista de cambios: los archivos que no están en la lista de cambios no se ven afectados.

crear lista de cambios
SVN lista de cambios de matemáticas-correcciones integer.c mathops.c

cometen sólo los archivos de lista de cambios en
svn ci -m "Corregir un error." --changelist matemáticas-correcciones

+0

Esto suena como un montón de trabajo, no quiero especificar los archivos que he cambiado, en lugar de los archivos que no deben ser comprometidos, tal vez entiendo mal ... –

0

La forma más fácil es ir a cualquier directorio que contiene el archivo de configuración y establecer una propiedad en él:

svn: ignore settings.php

se mantendrá como- es a través de todas las confirmaciones y actualizaciones. Su comando podría verse así:

$ svn propset svn: ignore 'settings.php'./

+0

Acabo de probar esto. Hice un pago, instalé un svn ignore en un archivo usando svn propset svn: ignore 'readme' ./ y luego hice un commit, pero el archivo readme todavía está comprometido cuando se cambia. –

+2

svn: ignorar no funcionará en los archivos que ya están bajo el control de versión – Muers

1

This answer habla sobre la creación de una lista de cambios denominada ignore-on-commit con su archivo de plantilla, solo funcionará si está utilizando TortoiseSVN.

Pero, una vez más, esta es una configuración por usuario.

+0

También habla de "Crear un script de enlace previo a la confirmación que rechace la confirmación cuando se está agregando una propiedad específica. Luego puede agregar esta propiedad a los archivos en el trabajo copia para evitar commits ", en caso de que no uses Tortoise SVN – achecopar

Cuestiones relacionadas