I have a rule of thumb when it comes to backup of projects: “Except for the main development tool [in my case: Visual Studio C# or CPython], everything that is needed to build the project should go into the version control system (in my case: Subversion or bzr)”.
Following that rule, it is super-easy to create a new branch of the project, which is a Good Thing ™. For example, changing working computer becomes easy. Also, reorganizing (refactoring?) the file system layout is a no-brainer.
Here are some implications of that rule:
- Dependent resources should be included, for example DLL’s, bitmaps, config files. They are part of the material needed to build the project!
- Dependent tools should be included, like the testing framework/tool. In my case NUnit. (I usually strip documentation, unnecessary binaries and such)
- The .bzrignore file should be included – it is part of the development environment needed to build/backup the project
In short, if I can answer “Yes” to the question “Will I be able to press ‘build’ then ‘run’ if I create a branch on another computer than mine?”, I’m cool.