Reading the answers to this question is interesting, as it shows a very wide range of interpretations of many different aspects of software development. Usually, I believe that no dependencies should be stored in VCS (VCS, I mean tools like git, hg, svn, cvs and no larger systems that include tools like Xcode) because this is not work VCS. Dependency tracking is best left to the packaging tool. (It seems that many people use VCS as a primitive packaging tool, which IMHO is a huge mistake.)
I think you need to clarify what you mean by "test environment." For me, most of my test suites are called by the framework provided by automake. Of course, I do not include automake in my git repository, but in the future there will be no problems with version differences, because the entire test structure generated by automake is included in the tarball distribution. So really the question is pushed to another level. If you use only VCS to track your releases, you have a problem because you really need to have a test framework when you are viewing an old version of a project. If VCS is the only storage mechanism for retrieving old releases (i.e. you do not use any kind of archived releases in archives), then you seem to be forced to put the framework in VCS. But hosting external software on your VCS is, frankly, stupid. The only reason for this is to use VCS as a distribution tool. Therefore, I believe that my answer is this: do not put the framework in your VCS, but put the framework in your distributions. If your VCS is your distribution tool, then there is no proper way to work with the test infrastructure.
William pursell
source share