Quais tipos de arquivo do Visual C ++ devem ser comprometidos com o controle de versão?

170

Quais tipos de arquivo do Visual Studio \ Visual C ++ devem ser comprometidos com o controle de versão?
No meu projeto, tenho os seguintes tipos de arquivo:

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

Eu apreciaria muito um breve raciocínio para cada um. Se algum deles for controverso, observe. Estou intencionalmente incluindo até tipos de arquivos triviais para garantir a integridade.

EDITAR

Por um lado, gostaria de ser independente de plataforma no futuro. Por outro lado, em um futuro próximo, gostaria de trabalhar com membros da equipe com configurações semelhantes. A compatibilidade de pastas entre as configurações é certamente uma opção; portanto, os arquivos de configuração que contêm caminhos podem ser incluídos se facilitar o fluxo de trabalho.
Mais uma vez, eu certamente apreciaria uma explicação sobre o que é o quê.

Jonathan
fonte
23
Uau, essa pergunta é uma verdadeira prova do crescente número de arquivos temporários que o VS insiste em criar no diretório do seu projeto.
Nik Reiman
@ Nik: eles não estão no diretório do projeto.
Hans Passant
1
@Hans, eles estão lá ou em um subdiretório do projeto
Nik Reiman
@ Nik: não o goo msbuild. O que eu suponho que você quis dizer com os arquivos temporários. Eu concordo, não é bonito.
Hans Passant
6
Convido você a experimentar o ambiente de desenvolvimento ISE da Xilinx (para programação HDL) e ver quantos arquivos temporários são lançados. Centenas de arquivos com centenas de extensões :) Fale sobre uma bagunça. O Visual Studio é muito limpo em comparação.
Mark Lakata

Respostas:

232

Sim:

  • cpp: código fonte
  • filtros: arquivo de projeto
  • h: código fonte
  • ico: recurso
  • script rc: resource
  • rc2: script de recurso
  • sln: arquivo de projeto
  • txt: elemento do projeto
  • vcxproj: arquivo de projeto

Não:

  • aps: último estado do editor de recursos
  • exe: resultado da compilação
  • idb: estado da construção
  • ipch: auxiliar de compilação
  • lastbuildstate: auxiliar de construção
  • lib: resultado da compilação. Pode ser de terceiros
  • log: criar log
  • manifesto: construir ajudante. Pode ser escrito você mesmo.
  • obj: auxiliar de construção
  • pch: auxiliar de construção
  • pdb: resultado da compilação
  • res: auxiliar de construção
  • sdf: intellisense dbase
  • suo: opções do usuário da solução
  • tlog: criar log
  • usuário: configurações de depuração. Preserve se apenas um desenvolvedor ou configurações de depuração personalizadas

Vários deles são duvidosos porque podem ser gerados automaticamente e mantidos. E há vários outros que não aparecem na sua lista. Preste atenção principalmente ao local do arquivo. Se estiver no diretório de solução ou projeto, é muito provável que você queira fazer check-in. Nos subdiretórios Debug ou Release, é altamente improvável. O Build + Clean remove muitos arquivos de ruído. E, é claro: faça o check-in, renomeie o diretório do projeto, faça o check-out e verifique se ele foi construído.

Hans Passant
fonte
Isso é muito útil. Meu projeto também tem um .vcb (esse projeto foi convertido de uma versão mais antiga (eVC) para que pode estar relacionado a isso.
Robbie Matthews
E os .vcxproj.filtersarquivos?
21720 John Johniou
1
Também NO para .OPENSDF
Zam
1
@ ja72 filtersestão na lista "sim" desde a primeira revisão da resposta
Asteroids With Wings
26

Na sua lista, eu escolheria os seguintes:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

Geralmente, você deve versão todos os arquivos necessários para construir o projeto. Arquivos gerados automaticamente não devem ser arquivados em imho.

Milão
fonte
@ milan1612 obrigado pela lista concisa. Comparado à resposta de Hans Passant, você disse que eu deveria enviar arquivos de manifesto onde ele disse que não deveria. Você poderia elaborar o que esse arquivo significa e por que você acha que devo enviá-lo, especialmente em um ambiente de equipe (e futura plataforma cruzada), se isso for relevante?
Jonathan
3
manifestos podem ter propósitos diferentes. Eu criei manualmente aqueles incluídos em um arquivo de recurso que fazia com que o Windows aplicasse estilos à minha janela. Além disso, existem manifestos que permitem implantar as DLLs da biblioteca padrão ao lado do executável. pense em metadados sobre sua aplicação ... #
Milan
@ milan1612 - Encontrei um tipo adicional - suo, isso também deve ser adicionado? Nesse caso, você poderia adicioná-lo à sua lista para completar?
11137 Jonathan
3
@Jonathan O suo contém dados específicos do desenvolvedor relacionados à solução (como quais arquivos estão abertos ou quais pastas estão abertas / recolhidas no Solution Explorer). Portanto, não deve estar no controle de versão.
Daniel Rose
1
@ milan1612 - Seguindo a entrada de Daniel Rose, você poderia remover o suo da sua lista?
Jonathan
17

Conforme sugerido pela Microsoft, tipos de arquivos que devem ser incluídos no controle de versão:

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

Tipos de arquivos que não devem ser incluídos em:

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

Mas no caso de usar uma ferramenta externa no arquivo exe ou na biblioteca externa, acho que ela também deve ser incluída no controle de versão

INFO: quais arquivos do Visual C ++ para adicionar ao controle de código-fonte

Além disso, este link descreve os tipos de arquivo para projetos do Visual C ++ no Visual Studio 2017.

phuclv
fonte
7

Se você clicar com o botão direito do mouse no projeto, deve haver uma opção "Adicionar solução ao controle de origem" no menu de contexto.

Se você usar isso, apenas os arquivos necessários serão adicionados. Todos os arquivos intermediários e de saída serão ignorados.

ChrisF
fonte
4

As outras respostas são excelentes; Eu apenas pensei em contribuir com uma pequena ferramenta útil. Confira o modelo .gitignore do Visual Studio no GitHub. É uma boa lista de arquivos mantidos ativamente que geralmente são mantidos fora do controle de versão.

E enquanto você está nisso, todo o repositório gitignore é um recurso muito útil para todos os tipos de desenvolvimento, do ActionScript ao Zend . Se você não usar o Git, ainda poderá usar os arquivos do gitignore como referência.

Phil
fonte
1

Em geral, você deve adicionar todos os arquivos que aparecem no Gerenciador de Soluções ao controle de versão. Além disso, você precisa incluir os arquivos .sln (arquivo de solução) e .vcproj / .vcxproj / .vbproj / .csproj (arquivo de projeto).

Observe que, se você tiver um plug-in de controle de origem para o Visual Studio, como TFS ou AnkhSvn, não há necessidade de se preocupar explicitamente com isso. O Visual Studio sabe quais arquivos precisam estar no controle de versão e fornece os dados ao plug-in de controle de origem. Somente se você usar uma ferramenta externa (por exemplo, TortoiseSVN), precisará dessa lista.

Daniel Rose
fonte
0

Somente as forças necessárias para construir seu alvo. Eu acho que isso é apenas .cpp .h .ico .rc .txt .manifest .rc2

Eu não sei o que sdf, aps, filtros, usuário é, não os vi em minhas compilações de C ++.

Basta procurar e descobrir se eles contêm código escrito pelo programador ou se são gerados pelo VS.

Lothar
fonte
4
.sln e .vcxproj são necessários com certeza - eles descrevem o projeto e a solução.
Sharptooth 13/10/10
Sim, se você não mantiver makefiles. Desculpe, eu sou pessoalmente tão anti-VS / MS que esqueci que existem pessoas usando o Visual Studio como a única ferramenta para seus desenvolvedores. Estou apenas usando o depurador.
Lothar
3
bem, os arquivos de projeto VS são makefiles muito
Milan
-2

Ao contrário do que foi declarado em uma resposta anterior, gostaria de salientar que parece ser importante controlar a versão do arquivo .opt para acompanhar as opções do usuário. Veja a referência abaixo:

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

mitch
fonte
1
Os arquivos .opt controlam a aparência do IDE, não a maneira como seu programa é compilado. Então, o que você se sentir bem sobre o IDE não é necessariamente bom em outro ponto de vista
phuclv