¿Qué tipos de archivos de Visual C ++ deberían comprometerse con el control de versiones?

170

¿Qué tipos de archivos de Visual Studio \ Visual C ++ deben comprometerse con el control de versiones?
En mi proyecto tengo los siguientes tipos de archivos:

aps
cpp
exe
filters
h
ico
idb
ipch
lastbuildstate
lib
log
manifest
obj
pch
pdb
rc
rc2
res
sdf
sln
suo
tlog
txt
user
vcxproj

Agradecería mucho un breve razonamiento para cada uno. Si alguno de ellos es controvertido, tenga en cuenta. Intencionalmente, incluso los tipos de archivos triviales para completar.

EDITAR

Por un lado, me gustaría ser independiente de la plataforma en el futuro. Por otro lado, en el futuro cercano me gustaría trabajar con miembros del equipo con configuraciones similares. La compatibilidad de carpetas entre las configuraciones es ciertamente una opción, por lo que los archivos de configuración que contienen rutas pueden incluirse si facilita el flujo de trabajo.
De nuevo, seguramente agradecería una explicación de qué es qué.

Jonathan
fuente
23
Wow, esta pregunta es un verdadero testimonio del creciente número de archivos temporales que VS insiste en crear en el directorio de su proyecto.
Nik Reiman
@Nik: no están en el directorio del proyecto.
Hans Passant el
1
@Hans, están allí o bajo un subdirectorio del proyecto
Nik Reiman
@Nik: no es el goo de msbuild. Lo que supongo que quisiste decir con los archivos temporales. Estoy de acuerdo, no es bonito.
Hans Passant
66
Los invito a probar el entorno de desarrollo ISE de Xilinx (para la programación HDL) y ver cuántos archivos temporales arroja. Cientos de archivos con cientos de extensiones :) Hable acerca de un desastre. Visual Studio es muy limpio en comparación.
Mark Lakata

Respuestas:

232

Si:

  • cpp: código fuente
  • filtros: archivo de proyecto
  • h: código fuente
  • ico: recurso
  • rc: script de recursos
  • rc2: script de recursos
  • sln: archivo de proyecto
  • txt: elemento del proyecto
  • vcxproj: archivo de proyecto

No:

  • aps: último estado del editor de recursos
  • exe: resultado de compilación
  • idb: estado de compilación
  • ipch: ayudante de construcción
  • lastbuildstate: ayudante de construcción
  • lib: resultado de compilación. Puede ser un tercero
  • log: construir log
  • manifiesto: ayudante de construcción. Se puede escribir usted mismo.
  • obj: ayudante de construcción
  • pch: ayudante de construcción
  • pdb: resultado de compilación
  • res: ayudante de construcción
  • sdf: intellisense dbase
  • suo: opciones de usuario de solución
  • tlog: construir registro
  • usuario: configuración de depuración. Preserve si solo un desarrollador o una configuración de depuración personalizada

Varios de estos son dudosos porque ambos se pueden generar y mantener automáticamente. Y hay varios más que no aparecen en su lista. Principalmente preste atención a la ubicación del archivo. Si está en el directorio de su solución o proyecto, es muy probable que desee registrarlo. En los subdirectorios Debug o Release, es muy poco probable. Build + Clean elimina muchos de los archivos de ruido. Y por supuesto: check-in, renombrar el directorio del proyecto, check-out y verificar que se construye.

Hans Passant
fuente
Esto es muy útil. Mi proyecto también tiene un .vcb (este proyecto se convirtió de una versión anterior (eVC), por lo que puede estar relacionado con eso.)
Robbie Matthews
¿Qué hay de los .vcxproj.filtersarchivos?
John Alexiou
1
También NO para .OPENSDF
Zam
1
@ ja72 filtersha estado en la lista "sí" desde la primera revisión de la respuesta
Asteroides con alas
26

De tu lista elegiría esos:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

En general, debe versionar todos los archivos necesarios para construir el proyecto. Los archivos generados automáticamente no deben archivarse en mi humilde opinión.

Milán
fuente
@ milan1612 gracias por la lista concisa. En comparación con la respuesta de Hans Passant, dijiste que debería cometer archivos de manifiesto donde él dijo que no debía. ¿Podría explicar qué significa este archivo y por qué cree que debería comprometerlo, especialmente en un entorno de equipo (y futuro multiplataforma), si es relevante?
Jonathan
3
los manifiestos pueden tener diferentes propósitos. He creado manualmente los que se incluyen en un archivo de recursos que hace que Windows aplique estilos a mi ventana. Además, hay manifiestos que le permiten implementar los dlls de la biblioteca estándar junto con su ejecutable. piense en metadatos sobre su aplicación ...
Milán
@ milan1612 - He encontrado un tipo adicional: suo, ¿debería agregarse esto también? Si es así, ¿podría agregarlo a su lista para completarlo?
Jonathan
3
@ Jonathan El suo contiene datos específicos del desarrollador relacionados con la solución (como qué archivos están abiertos o qué carpetas están abiertas / colapsadas en el explorador de soluciones). Por lo tanto, no debería estar en el control de versiones.
Daniel Rose
1
@ milan1612 - Siguiendo la entrada de Daniel Rose, ¿podrías eliminar el suo de tu lista?
Jonathan
17

Según lo sugerido por Microsoft, los tipos de archivo que deben incluirse en el control de versiones:

.mak, .dsp, .c, .rc, .rc2, .ico, .bmp, .txt, .def, .hpj, .bat, .rtf, .odl, .inf, .reg, .cnt, .cpp , .cxx, .h, .hpp, .hxx, .inl, .tpl, .vtp y .mst ...

Tipos de archivo que no deberían incluirse en:

.pch, .mdp, .ncb, .clw, .obj, .exe, .aps, .cpl, .awk, .exp, .lib, .idb, .opt, .pdb, .map, .res, .ilk , .scc, .bsc, .sbr, .dll y .tlb ...

Pero en caso de usar una herramienta externa en un archivo exe o una biblioteca externa, creo que también debería incluirse en el control de versiones

INFORMACIÓN: Qué archivos de Visual C ++ agregar al control de código fuente

Además, este enlace describe los Tipos de archivo para proyectos de Visual C ++ en Visual Studio 2017.

phuclv
fuente
7

Si hace clic derecho sobre el proyecto, debería haber una opción "Agregar solución al control de código fuente" en el menú contextual.

Si usa esto, solo se agregarán los archivos que sean necesarios. Todos los archivos intermedios y de salida serán ignorados.

ChrisF
fuente
4

Las otras respuestas son excelentes; Solo pensé que contribuiría con una pequeña herramienta útil. Echa un vistazo a la plantilla .gitignore de Visual Studio en GitHub. Es una buena lista de archivos que se mantienen activamente fuera del control de versiones.

Y mientras lo hace, todo el repositorio de gitignore es un recurso muy útil para todo tipo de desarrollo, desde ActionScript hasta Zend . Si no usa Git, aún puede usar los archivos gitignore como referencia.

Phil
fuente
1

En general, debe agregar todos los archivos que aparecen en el Explorador de soluciones al control de versiones. Además, debe incluir los archivos .sln (archivo de solución) y .vcproj / .vcxproj / .vbproj / .csproj (archivo de proyecto).

Tenga en cuenta que si tiene un complemento de control de origen para Visual Studio, como TFS o AnkhSvn, no hay necesidad de preocuparse explícitamente por esto. Visual Studio sabe qué archivos deben estar en el control de versiones y proporciona los datos al complemento de control de origen. Solo si usa una herramienta externa (ej. TortoiseSVN) necesita tener esa lista.

Daniel Rose
fuente
0

Solo las onces que se requieren para construir tu objetivo. Creo que esto es solo .cpp .h .ico .rc .txt .manifest .rc2

No sé qué sdf, aps, filtros, usuario, no los he visto en mis compilaciones de C ++.

Solo mire y descubra si contienen código escrito del programador o si son generados por VS.

Lothar
fuente
44
Seguro .sln y .vcxproj son necesarios, describen el proyecto y la solución.
Sharptooth
Sí, si no mantiene archivos MAKE. Lo siento, personalmente soy tan Anti-VS / MS que olvidé que hay personas que usan Visual Studio como la única herramienta para su desarrollo. Solo estoy usando el depurador.
Lothar
3
bueno, los archivos del proyecto VS también son archivos make
Milan
-2

Al contrario de lo que se indicó en una respuesta anterior, me gustaría señalar que parece importante controlar la versión del archivo .opt para realizar un seguimiento de las opciones del usuario. Ver referencia a continuación:

https://msdn.microsoft.com/en-us/library/aa278994(v=vs.60).aspx

mitch
fuente
1
Los archivos .opt controlan la apariencia del IDE, no la forma en que se compila su programa. Entonces, lo que te hace sentir bien con el IDE no es necesariamente bueno en la perspectiva de los demás
phuclv