2008-09-30 24 views
40

Esto me ha estado molestando durante mucho tiempo: ¿cómo puedo resolver correctamente un conflicto de combinación dentro de las propiedades SVN establecidas en un directorio? Digamos, por ejemplo, que hay dos desarrolladores trabajando en un proyecto donde svn: ignore está establecido en algún directorio. Si ambos desarrolladores realizan cambios en esta propiedad, cuando la segunda se actualice, verán un conflicto de fusión.¿Cómo puedo resolver un conflicto de combinación con las propiedades de SVN?

A diferencia de los conflictos de combinación de archivos, se genera un único archivo en el directorio llamado "dir_conflicts.prej", que el segundo desarrollador debe leer y corregir manualmente. Por lo general, lo que termino haciendo es revertir todos mis cambios a la copia local, y luego volver a configurar estas propiedades de forma manual con la información en dir_conflicts.prej. Sin embargo, esto es bastante engorroso cuando se trata de una gran lista de URL en una propiedad svn: externals, como muchos de nuestros proyectos usan.

Tiene que haber una mejor manera de hacerlo, ¿alguien sabe cómo?

Respuesta

11

Sólo una rápida actualización después de una investigación adicional - no es posible combinar fácilmente las propiedades SVN. Mi método originalmente descrito (revertir, combinar datos de archivos .prej, propset, re-commit) parece ser la mejor manera de lidiar con este tipo de problema.

+0

Por desgracia, tengo que 1 esta respuesta. La mina trata con la propiedad svn: externals y un anit-pattern en su uso. No es el lugar adecuado para entrar en detalles, pero de todos modos pensé que me quedaría aquí. – FlipMcF

1

¿Te refieres a un conflicto de combinación en commit/update o branch merge?

El SVN Book es bastante clara acerca de la propiedad svn: ignore en particular:

Subversion no asume que todos los archivos o subdirectorio en un directorio de copia de trabajo ha sido diseñada para el control de versiones . Los recursos deben ser explícitamente colocados bajo la administración de Subversion usando los comandos svn add o svn import .

...

Para forzar a cada usuario del repositorio para agregar patrones de esos recursos a sus áreas de configuración en tiempo de ejecución no sólo sería una carga, pero tiene el potencial de entrar en conflicto con la las necesidades de configuración de otras copias de trabajo que el usuario ha prestado.

3

En el entretanto, esto es posible en Eclipse + Subclipse (Indigo) utilizando la función

Team-> Editar conflictos de propiedad

(solo tratado con SVN en conflicto: ignorar propiedades)

Esta función abre un diálogo que muestra las dos versiones de propiedades (local y de repositorio), donde puede copiar & pegar y luego resolver el conflicto usando Equipo-> Marcar Resuelto.

0

Para que quede claro, SVN parece usar el archivo dir_conflicts.prej para derivar el hecho de que el directorio tiene un conflicto. Si tiene la intención de abordar el conflicto de forma manual, simplemente puede eliminar los conflictos dir_.archivo prej y luego configure manualmente las propiedades svn como desee. (¡Por supuesto, asegúrese de obtener lo que necesita del archivo .prej antes de eliminarlo!)

0

Tuve un conflicto similar. Abrí dir_conflicts.prej en un editor de texto y vi que el svn ignore list había sido cambiado. Afortunadamente, el contenido de la lista era el mismo, solo el orden cambió. Entonces, en TortoiseSVN 1.9.3, simplemente hago clic derecho en la carpeta y luego TortoiseSVN -> Resolve.... Y el conflicto fue arreglado.

3

Tuve el mismo problema.

He intentado utilizar Team-> Editar conflictos de propiedad pero mis STS obtuve colgado y no respondieron, por lo tanto Forcé cerca.

Es posible resolver con TortoiseSVN

Así es como decidí

  • seleccione la carpeta donde se encuentra el dir_conflicts.prej
  • haga clic con TortoiseSVN -> Resolver ...
  • Se le pedirá entonces a resolver los conflictos de propiedad
  • RESUELVEN y guardar
Cuestiones relacionadas