¿Debo agregar archivos .vcxproj.filter al control de origen?

169

Si bien la evaluación de Visual Studio 2010 Beta 2, veo que en el directorio convertido, mis vcproj archivos se convirtieron en vcxproj archivos. También hay archivos vcxproj.filter junto a cada proyecto que parecen contener una descripción de la estructura de carpetas (\ Source Files, \ Header Files, etc.).

¿Crees que estos archivos de filtro deberían mantenerse por usuario, o deberían compartirse en todo el grupo de desarrollo y registrarse en SCC?

Mi pensamiento actual es revisarlos, pero me pregunto si hay alguna razón para no hacerlo, o quizás buenas razones por las que definitivamente debería registrarlos.

El beneficio obvio es que las estructuras de carpetas coincidirán si estoy mirando la máquina de otra persona, pero ¿tal vez les gustaría reorganizar las cosas lógicamente?

jschroedl
fuente

Respuestas:

59

Las versiones anteriores de Visual Studio (al menos las versiones 6.0 y 2008) almacenan esa información en su propio archivo de proyecto (archivos .dsp y .vcproj respectivamente), que por supuesto es bueno agregar a SCC.

No se me ocurre ninguna razón para no incluir estos archivos .filter en SCC

jrbjazz
fuente
Estoy contigo. Lo revisé. ¡Gracias!
jschroedl
111

Intencionalmente tiramos del filtro. información de archivo fuera del .vcproj cuando tradujimos al formato .vcxproj MSBuild. Una razón es exactamente lo que usted señaló, que los filtros son puramente una vista lógica y que diferentes miembros del equipo pueden querer diferentes vistas. La otra es que a veces la compilación está configurada para verificar la marca de tiempo del archivo del proyecto y desencadenar una reconstrucción si ha cambiado, porque eso puede significar que hay diferentes archivos fuente para compilar, o diferentes configuraciones, etc. recuerde si realmente enviamos con la compilación activando de esa manera, pero la idea era que no queríamos desencadenar una reconstrucción simplemente porque los filtros cambiaron, ya que no afectan la construcción.

dan moseley
fuente
3
para las reconstrucciones automáticas, compila si algún archivo ha cambiado (por ejemplo, fuente), por lo que ahora nada ha cambiado, excepto que tenemos otro archivo para administrar.
gbjbaanb
3
Terminamos registrándolos y hemos estado contentos con ese acuerdo hasta ahora. Resulta más agradable para nosotros trabajar con otros desarrolladores si tienen la misma estructura de filtro.
jschroedl
9
Los trato por separado. En lo que a mí respecta, cuanto menos basura tenga que ser preservada como parte del estado del proyecto, mejor, así que creo que esta es una buena decisión.
rwallace
66
¿Podemos deshabilitar esos filtros por completo si no queremos usar ningún árbol abstracto / lógico pero solo vemos el sistema de archivos simple?
Johan Boulé
44
@JohanBoule: ¡Estoy totalmente de acuerdo! Deberían haber desechado los filtros en el IDE. Ya existe una estructura de árbol lógica y se llama "sistema de archivos". Actualmente hay mucha duplicación: cada archivo debe agregarse al sistema de archivos, al script de compilación (vcxproj), a los filtros (vcxproj.filters), al control de código fuente y, tal vez, a otro lugar. Viola el principio SECO. Afortunadamente parece que los archivos de filtro son opcionales . Simplemente puede eliminarlos y usar el botón "Mostrar todos los archivos" en el IDE. Lástima que no sea el predeterminado.
Yakov Galka
5

Me acabo de dar cuenta de que si usa Git puede marcar los archivos .filter para que sean tratados como una unión para fusionarlos y simplificarlos. Solo agrega la línea:

*.vcxproj.filters merge=union

a su archivo .gitattributes.

Consulte Uso de .gitattributes para evitar conflictos de fusión para obtener más detalles.

perejil72
fuente
El enlace mencionado no dice que este archivo .filters debería tener una "unión" mencionada en el archivo gitattributes.
ollydbg23
2
Pero dice lo que merge=unionhace: no se prometió nada más. Con ese conocimiento y una idea muy amplia de cómo se ven los archivos * .filter, es fácil ver por qué merge=uniones una buena idea para esos archivos.
Peter Schneider
1

No debe añadirse en caso de que utilice CMake(o herramientas de construcción similares) para generar archivos como *.sln, *.vcxproj, *.vcxproj.filtersetc., ya que estos archivos pueden contener ruta completa a la carpeta del proyecto y otra sólo carpetas específicas de su PC .

V. Panchenko
fuente