2008-10-03 12 views
8

Utilizamos Subversion como nuestro sistema de control de origen y almacenamos los archivos de proyecto de VisualStudio (vcproj) en el sistema de control de origen como es normal, creo. Con Subversion no usamos ningún tipo de bloqueo de archivos, por lo que si dos desarrolladores trabajan en el mismo proyecto al mismo tiempo y ambos agregan archivos al proyecto o cambian las configuraciones, el segundo para comprometerse debe fusionar los cambios.¿Cómo maneja los archivos .vcproj en el control de código fuente que son modificados por múltiples desarrolladores?

¿Cómo fusiona estos cambios?

Los archivos vcproj son solo archivos de texto, por lo que es posible editarlos a mano, pero no son muy fáciles de editar a mano, especialmente por los desarrolladores junior.

Las maneras en que puedo pensar son

  • obtener la última versión del SVN y volver a agregar todos los cambios locales manualmente
  • editar el archivo a mano para resolver cualquier conflicto de una fusión automática
  • Implemente algún tipo de esquema de bloqueo para evitar cambios simultáneos
  • Tenga un acuerdo entre los desarrolladores para que no realicen cambios simultáneos

Actualmente estamos utilizando la primera opción de volver a agregar todos los cambios manualmente, pero esto lleva mucho tiempo y me pregunto si hay una forma mejor.

Con archivos fuente, la función de combinación automática funciona la mayor parte del tiempo y no obtenemos muchos conflictos.

+0

Puede encontrar que si tiene colisiones frecuentes en el check-in, puede beneficiarse cambiando la forma en que se organiza el árbol de su proyecto. IE: en lugar de tener un archivo .vcproj con 500 archivos, tiene 1 proyecto con 50 archivos que enlaza a 9 bibliotecas con 50 archivos cada una. Si encuentra que * no puede * dividir su proyecto en bibliotecas separadas, es posible que gastar el tiempo para hacerlo posible al final aumente la eficiencia del desarrollador, porque la modularidad ayuda con algo más que el mantenimiento del archivo de proyecto. – KeyserSoze

Respuesta

4

He encontrado que la opción 2 (editar los archivos a mano) generalmente funciona bastante bien, siempre y cuando esté usando una buena herramienta de diff (yo uso WinMerge). El principal problema con el que me he encontrado es que Visual Studio algunas veces reordenará el archivo. Pero, si tiene una buena herramienta de diff/merge, entonces debería ser capaz de diferenciar entre contenido modificado y contenido movido. Eso puede ayudar mucho.

+0

Esto es triste. 2010 y los archivos VCPROJ deben mantenerse a mano para que el sistema de control de revisiones no lo elimine. – dwj

+0

De acuerdo, +1. El 95% de las veces, los cambios son muy pequeños (como agregar o eliminar 1 o 2 archivos del proyecto) y se fusionarán sin problemas. Siempre y cuando no estés haciendo grandes cambios en el archivo del proyecto y mires detenidamente el resultado combinado antes de aceptarlo automáticamente, estarás bien. En los casos poco frecuentes en los que la combinación no funciona, debe rehacer sus cambios locales. –

-1

Utilizamos una herramienta diff (WinMerge) para unir los cambios. Los archivos del proyecto son (en su mayor parte) XML muy directo. La clave aquí, sin embargo, es que nunca debe haber sorpresas al fusionarse, porque una buena comunicación es parte de la base del control de fuente efectivo.

Los cambios simultáneos al proyecto están perfectamente bien mientras la gente se comunique.

+0

Heh. Mi cerebro hizo una pequeña sustitución en tu última oración allí. "Los cambios simultáneos están perfectamente bien ... siempre y cuando me registre primero". :) – Herms

+0

si obtienes más de 10 desarrolladores o trabajas en varias ubicaciones o zonas vinculadas, esto simplemente no es lo suficientemente confiable como para apostar tu desarrollo. – Simon

+0

No estoy de acuerdo por completo. Si tiene problemas *, entonces está haciendo algo * incorrecto. ¡Esto es precisamente lo que el control de la fuente debería resolver! –

1

Este es un problema difícil y creo que una debilidad en la arquitectura de Visual Studio. La forma en que lo encontramos fue no tener los archivos de proyecto en control de fuente en absoluto y tener un script de compilación que manejara las configuraciones.

La alternativa era muy complicada y no podíamos garantizar construcciones o entornos consistentes entre los desarrolladores. Esto llevó a una gran cantidad de problemas de integración aguas abajo y finalmente tomamos el paso draconiano de eliminar los archivos de proyecto del control de fuente.

Los entornos de los desarrolladores aún podían desalinearse pero aparecían cuando intentaban construir cosas ellos mismos.

1

Usando TFS aquí, pero no creo que marque la diferencia.
También no trabamos, y a veces tenemos que tratar con la fusión de archivos de proyecto. Nunca he encontrado que sea tan complejo o un gran problema.Rara vez experimentamos problemas que no se pueden fusionar automáticamente, y el proceso de fusión manual es bastante trivial.

Solo hay una advertencia al respecto: ¡Regístrese con frecuencia! Si realiza cambios importantes en la estructura del proyecto y no los revisa inmediatamente, esos cambios pueden comenzar a complicar la complejidad de las fusiones posteriores. Si realizo un cambio importante en la estructura de un proyecto, suelo darles a todos un aviso. Les pediré a todos que revisen su trabajo actual y luego me encarguen de la fusión.

0

Las opciones 1 y 2 no son mutuamente excluyentes: si el desarrollador es de nivel junior, permítale usar la opción 1 (vuelva a obtener el archivo del proyecto y vuelva a hacer los cambios) si eso le resulta más cómodo. Para desarrolladores más experimentados, la opción 2 (fusionar usando una herramienta de combinación) está perfectamente bien.

Creo que esta es una situación que actualmente no tiene una solución mágica: a veces la fusión es un dolor.

1

me encontré con esto recientemente: http://www.codeproject.com/KB/macros/vcproj_formatter.aspx Si ejecuta esta herramienta en un archivo vcproj y en una versión modificada de la misma a continuación, puede combinarlos entre sí con facilidad con la combinación de texto favorito herramienta, y además el resultado es un archivo bastante bonito vcproj.

Cuestiones relacionadas