Project files should not be put under version control because of several reasons:
- Developers might prefer different IDEs. This is especially true for Java projects. Someone might prefer Eclipse while somebody likes NetBeans or IDEA. Project could have its officially approved IDE though. But still, it's not a good idea to keep all the project files in a repository.
- Project files change too often. Project files always have specific format and it could be difficult to track corresponding changes. It also might be tedious to commit those files every time they have been changed by IDE.
- It is not always possible to separate private project properties and general project properties. For example, developers might prefer to store projects in different places on the local machine. But it is not really wise to share your personal path to others. It would be really better if some project properties will remain private/ignored. But the problem is that it could not be easily done with all project files.
Very often project files are put under version control in order to have the same project build configuration on all machines, so that it would build anywhere. But, actually, it is not possible. Build management tools (such as Ant, Maven, NAnt, MSBuild, Rake) should be used instead. It will be possible to store all build configuration and properties in one build file and put it under version control instead of whole project configuration directory.