2012-01-27 13 views
7

Al ejecutar una svn up me encuentro con regularidad este mensaje:¿Cómo puedo obtener SVN para tomar una resolución específica para todos los conflictos binarios sin preguntarme por cada uno?

Conflict discovered in 'lib/somelibrary.so'. 
Select: (p) postpone, 
     (mf) mine-full, (tf) theirs-full, 
     (s) show all options: 

Golpear s revela las opciones mc y tc, remoción de conflictos y el de ellos a los conflictos, que supuestamente permítanme aprovechar bien mi versión o su versión para todos conflictos y no solo somelibrary.so.

Sin embargo, esas opciones no funcionan. Me sale este mensaje:

Invalid option; cannot choose based on conflicts in a binary file. 

respuesta de Edwin deja claro que he entendido bien cómo mc y tc trabajo, pero todavía quiere ser capaz de tomar la misma resolución para cada archivo que entra en conflicto. ¿Hay alguna manera de hacer que svn use mf o tf para cada conflicto sin preguntarme nuevamente después de la primera vez?

Respuesta

10

Para resolver automáticamente conflictos en svn update, svn switch, svn merge, utilice la bandera --accept.

Desde el SVN Book - svn options:

ACCIÓN --Acepte
especifica una acción para la resolución de conflictos automático. Las posibles acciones son posponer, base, mina llena, completa, edición y lanzamiento.

Significado de cada acción se puede ver en la svn resolvespecification:

se puede pasar los siguientes argumentos al comando --Acepte dependiendo en su resolución deseada:

base de Elija el archivo que fue la revisión BASE antes de actualizar su copia de trabajo.Es decir, el archivo que revisó antes de que haya realizado sus últimos cambios.

trabajo Suponiendo que usted ha manejado manualmente la resolución de conflictos, elija la versión del archivo, ya que actualmente se encuentra en su copia de trabajo.

mine-full Resuelva todos los archivos en conflicto con copias de los archivos como que se encontraban inmediatamente antes de ejecutar svn update.

de ellos con todas las resolver todos los archivos en conflicto con las copias de los archivos que fueron recoger del servidor al ejecutar svn update.

de remoción de conflicto resolver todos los archivos en conflicto por prefiriendo modificaciones locales sobre los cambios recoger del servidor en conflicto regiones del contenido de cada archivo.

de ellos a un conflicto resolver todos los archivos en conflicto por preferir los cambios recoger del servidor más modificaciones locales en conflicto regiones del contenido de cada archivo.

Consulte también la sección Resolve Any Conflict.

Finalmente, un ejemplo. Para resolver automáticamente todos los conflictos como mine-full en la actualización, ejecute:

$ svn up --resolve mine-full 
1

mc y tc son opciones de fusión, donde solo se tienen en cuenta las líneas en conflicto, y luego se fusionan esas líneas desde las fuentes (mc) o las "otras" fuentes (tc). Los archivos binarios generalmente no están estructurados de forma que contengan líneas, como tales, los algoritmos de resolución de conflictos que se basan en reemplazar la línea de texto de otra persona con la línea de texto de otro no funcionarán correctamente para un archivo binario. Los desarrolladores que escribieron SVN lo saben, por lo que cuando se trata de un archivo binario, las opciones que solo tienen sentido con los archivos de texto no serán aceptadas.

Puede usar mf y tf, que son ligeramente diferentes. En lugar de reemplazar solo las áreas conflictivas de un archivo, reemplazan el archivo completo con (mf) "mi" copia del archivo completo, o (tf) "su" copia del archivo completo).

Si desea que SVN "cierre y acepte las opciones del archivo mc/tc", svn edite el tipo mime y configúrelo como texto. Buena suerte si no se trata de un archivo de texto, es probable que obtenga un archivo que no se encuentre dentro de las especificaciones de cualquier archivo binario inicial (por ejemplo, la fusión de secciones continuas de dos archivos jpeg no arrojará un archivo jpeg válido).

+0

tiene sentido, gracias. Con ese conocimiento entonces, ¿hay alguna manera de que pueda hacer que svn haga 'mf' o' tf' para todos los archivos, en lugar de solicitarme cada uno? –

+0

Cada archivo en conflicto puede requerir resolución de una manera diferente. No estoy tan seguro de que sea sensato decidir en masa un tipo de resolución incluso antes de saber qué archivos están en conflicto (o por qué). –

+0

La pregunta es si es posible, no si debería hacerlo todo el tiempo. Sé cuándo tiene sentido hacerlo y cuándo no. –

Cuestiones relacionadas