Which Visual C++ file types should be committed to version control?

Jonathan picture Jonathan · Oct 13, 2010 · Viewed 52.5k times · Source

Which Visual Studio \ Visual C++ file types should be committed to version control?
In my project I have the following file types:

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

I would greatly appreciate a short reasoning for each. If any of them are controversial, please note it. I'm intentionally including even trivial file types for completeness.

EDIT

On one hand I would like to be platform independent in the future. On the other hand in the near future I would like to work with team members with similar setups. Folder compatibility between the setups is certainly an option, so configuration files holding paths may be included if it eases the workflow.
Again, I would surely appreciate an explanation what's what.

Answer

Hans Passant picture Hans Passant · Oct 13, 2010

Yes:

  • cpp: source code
  • filters: project file
  • h: source code
  • ico: resource
  • rc: resource script
  • rc2: resource script
  • sln: project file
  • txt: project element
  • vcxproj: project file

No:

  • aps: last resource editor state
  • exe: build result
  • idb: build state
  • ipch: build helper
  • lastbuildstate: build helper
  • lib: build result. Can be 3rd party
  • log: build log
  • manifest: build helper. Can be written yourself.
  • obj: build helper
  • pch: build helper
  • pdb: build result
  • res: build helper
  • sdf: intellisense dbase
  • suo: solution user options
  • tlog: build log
  • user: debug settings. Do preserve if just one dev or custom debug settings

Several of these are iffy because they can both be auto-generated and maintained yourself. And there are several more that don't appear in your list. Primarily pay attention to the location of the file. If it is in your solution or project directory then it's highly likely you want to check it in. In the Debug or Release subdirectories then highly unlikely. Build + Clean removes a lot of the noise files. And of course: check-in, rename the project directory, check-out and verify that it builds.