Quels types de fichiers Visual C ++ doivent être validés pour le contrôle de version?

170

Quels types de fichiers Visual Studio \ Visual C ++ doivent être validés dans le contrôle de version?
Dans mon projet, j'ai les types de fichiers suivants:

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

J'apprécierais grandement un bref raisonnement pour chacun. Si l'un d'entre eux est controversé, veuillez le noter. J'inclus intentionnellement des types de fichiers même triviaux pour l'exhaustivité.

ÉDITER

D'une part, je voudrais être indépendant de la plateforme à l'avenir. D'autre part, dans un proche avenir, j'aimerais travailler avec des membres de l'équipe avec des configurations similaires. La compatibilité des dossiers entre les configurations est certainement une option, donc les fichiers de configuration contenant des chemins peuvent être inclus si cela facilite le flux de travail.
Encore une fois, j'apprécierais sûrement une explication de quoi.

Jonathan
la source
23
Wow, cette question est un véritable témoignage du nombre croissant de fichiers temporaires que VS insiste pour créer dans le répertoire de votre projet.
Nik Reiman
@Nik: ils ne sont pas dans le répertoire du projet.
Hans Passant
1
@Hans, ils sont soit là, soit sous un sous
Nik Reiman
@Nik: pas le goo msbuild. Ce que je suppose que vous vouliez dire avec les fichiers temporaires. Je suis d'accord, ce n'est pas joli.
Hans Passant
6
Je vous invite à essayer l'environnement de développement ISE de Xilinx (pour la programmation HDL) et à voir combien de fichiers temporaires il crache. Des centaines de fichiers avec des centaines d'extensions :) Parlez d'un désordre. Visual Studio est très propre en comparaison.
Mark Lakata

Réponses:

232

Oui:

  • cpp: code source
  • filtres: fichier de projet
  • h: code source
  • ico: ressource
  • rc: script de ressources
  • rc2: script de ressources
  • sln: fichier projet
  • txt: élément de projet
  • vcxproj: fichier projet

Non:

  • aps: dernier état de l'éditeur de ressources
  • exe: résultat de la construction
  • idb: état de construction
  • ipch: aide à la construction
  • lastbuildstate: assistant de construction
  • lib: résultat de la construction. Peut être une tierce partie
  • log: journal de construction
  • manifest: aide à la construction. Peut être écrit vous-même.
  • obj: aide à la construction
  • pch: aide à la construction
  • pdb: résultat de la construction
  • res: aide à la construction
  • sdf: base de données intellisense
  • suo: options utilisateur de la solution
  • tlog: journal de construction
  • utilisateur: paramètres de débogage. Conserver si un seul développeur ou paramètres de débogage personnalisés

Plusieurs d'entre eux sont incertains car ils peuvent à la fois être générés automatiquement et entretenus vous-même. Et il y en a plusieurs autres qui n'apparaissent pas dans votre liste. Faites principalement attention à l'emplacement du fichier. S'il se trouve dans votre répertoire de solution ou de projet, il est fort probable que vous souhaitiez l'archiver. Dans les sous-répertoires Debug ou Release, il est alors hautement improbable. Build + Clean supprime une grande partie des fichiers de bruit. Et bien sûr: archiver, renommer le répertoire du projet, extraire et vérifier qu'il se construit.

Hans Passant
la source
C'est très utile. Mon projet a également un .vcb (ce projet a été converti à partir d'une ancienne version (eVC) et peut donc être lié à cela.
Robbie Matthews
Et les .vcxproj.filtersfichiers?
John Alexiou
1
Aussi NON pour .OPENSDF
Zam
1
@ ja72 filtersest dans la liste "oui" depuis la première révision de la réponse
Asteroids With Wings
26

Dans votre liste, je choisirais ceux-ci:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

En règle générale, vous devez effectuer une version de tous les fichiers nécessaires pour générer le projet. Les fichiers générés automatiquement ne doivent pas être archivés à mon humble avis.

Milan
la source
@ milan1612 merci pour la liste concise. Par rapport à la réponse de Hans Passant, vous avez dit que je devrais livrer des fichiers manifestes là où il a dit que je ne devrais pas. Pourriez-vous expliquer ce que signifie ce fichier et pourquoi pensez-vous que je devrais le valider, en particulier dans un environnement d'équipe (et futur multiplateforme), si cela est pertinent?
Jonathan
3
les manifestes peuvent avoir des objectifs différents. J'en ai créé manuellement des inclus dans un fichier de ressources qui ont amené les fenêtres à appliquer des styles à ma fenêtre. également, il existe des manifestes qui vous permettent de déployer les DLL de bibliothèque standard avec votre exécutable. pensez à des méta-données sur votre application ...
Milan
@ milan1612 - J'ai rencontré un type supplémentaire - suo, devrait-il être ajouté également? dans l'affirmative, pourriez-vous l'ajouter à votre liste par souci d'exhaustivité?
Jonathan
3
@Jonathan Le suo contient des données spécifiques au développeur liées à la solution (comme quels fichiers sont ouverts ou quels dossiers sont ouverts / réduits dans l'explorateur de solutions). Ainsi, il ne devrait pas être en contrôle de version.
Daniel Rose
1
@ milan1612 - Suite aux commentaires de Daniel Rose, pourriez-vous supprimer le suo de votre liste?
Jonathan
17

Comme suggéré par Microsoft, les types de fichiers à inclure dans le contrôle de version:

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

Les types de fichiers qui ne devraient pas être inclus dans:

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

Mais en cas d'utilisation d'un outil externe dans un fichier exe ou une bibliothèque externe, je pense qu'il devrait également être inclus dans le contrôle de version

INFO: quels fichiers Visual C ++ ajouter au contrôle de code source

En outre, ce lien décrit les types de fichiers pour les projets Visual C ++ dans Visual Studio 2017.

phuclv
la source
7

Si vous cliquez avec le bouton droit sur le projet, il devrait y avoir une option "Ajouter une solution au contrôle de code source" dans le menu contextuel.

Si vous l'utilisez, seuls les fichiers nécessaires seront ajoutés. Tous les fichiers intermédiaires et de sortie seront ignorés.

ChrisF
la source
4

Les autres réponses sont excellentes; J'ai juste pensé que je contribuerais à un petit outil utile. Consultez le modèle Visual Studio .gitignore sur GitHub. C'est une belle liste activement maintenue de fichiers qui sont généralement tenus hors du contrôle de version.

Et tant que vous y êtes, l'ensemble du référentiel gitignore est une ressource très utile pour toutes sortes de développement, d' ActionScript à Zend . Si vous n'utilisez pas Git, vous pouvez toujours utiliser les fichiers gitignore comme référence.

Phil
la source
1

En général, vous devez ajouter tous les fichiers qui apparaissent dans l'Explorateur de solutions au contrôle de version. De plus, vous devez inclure les fichiers .sln (fichier de solution) et .vcproj / .vcxproj / .vbproj / .csproj (fichier de projet).

Notez que si vous avez un plugin de contrôle de source pour Visual Studio, tel que TFS ou AnkhSvn, il n'est pas nécessaire de s'en soucier explicitement. Visual Studio sait quels fichiers doivent être dans le contrôle de version et fournit les données au plug-in de contrôle de source. Ce n'est que si vous utilisez un outil externe (par exemple TortoiseSVN) que vous avez besoin d'une telle liste.

Daniel Rose
la source
0

Seulement les onces nécessaires à la construction de votre cible. Je pense que c'est juste .cpp .h .ico .rc .txt .manifest .rc2

Je ne sais pas ce que sont sdf, aps, filtres, utilisateur, je ne les ai pas vus dans mes versions C ++.

Regardez et découvrez s'ils contiennent du code écrit par le programmeur ou s'ils sont générés par VS.

Lothar
la source
4
.sln et .vcxproj sont nécessaires à coup sûr - ils décrivent le projet et la solution.
Sharptooth
Oui, si vous ne maintenez pas de makefiles. Désolé, je suis personnellement tellement Anti-VS / MS que j'ai oublié qu'il y a des gens qui utilisent Visual Studio comme seul outil pour leurs développeurs. J'utilise uniquement le débogueur.
Lothar
3
eh bien, les fichiers de projet VS sont aussi des makefiles
Milan
-2

Contrairement à ce qui a été dit dans une réponse précédente, je tiens à souligner qu'il semble important de contrôler la version du fichier .opt afin de garder une trace des options utilisateur. Voir référence ci-dessous:

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

mitch
la source
1
Les fichiers .opt contrôlent l' aspect et la convivialité de l'EDI, pas la façon dont votre programme est compilé. Donc, ce que vous vous sentez bien dans l'IDE n'est pas nécessairement bon dans la perspective des autres
phuclv