There are many software repositories out there that can be used for backing up your files or sharing them with others. Repositories can be useful when you are the only developer or also when you are working with a team.
It should also be noted that you can use the repos for storing things besides code such as schematics, documentation, and tools. I would recommend against putting large data sets in the repo as that can bloat the repo and make new pulls take longer.
Here are some of the common repository tools (that are open source ie. free) and why they are good and bad for us roboticists.
|CVS||CVS is an old school centralized repo. In my opinion you should not start a project with it. If you want a centralized repo then use subversion. It also has poor support for handling non-text files.|
|Subversion (SVN)||Centralized repository so all commits go to the same server. This is bad since when you are in the field or do not have internet there in no easy way to use your repository. Subversion is faster and nicer to use then the older CVS. There is a good windows program called tortoise that lets you use svn from Windows. With the centralized repo where the bulk of the repo lives on a server you can do partial checkouts and pulls to only get/update the files you want.|
|GIT or Mercurial||I grouped these together since they are very similar to each other. They are both distributed repositories which means that they do not push to a central server. Each checkout is a full repository. This means when you go the field you can still access the repository and pull/push code from others and to/from the robot. The downside of these distributed repositories are that they are a little harder to use and can easily get put in a state that requires effort to correct before being able to use it again. There is a site called github that lets you host repo’s.|
Image Source: http://firstname.lastname@example.org