Just posted: An Introduction to Collaborating with Version Control, a guide to the basics of using Git and GitHub.
This has been a problem forever: You’ve got a project made out of files – something like the source code for an Arduino sketch or a Raspberry Pi project in Python, for example – and as you work on it, you need to know things like:
- What the last stable, known-good version looked like.
- What version is deployed to hardware in the field.
- When, roughly, it was last changed.
Version control systems, also variously known as revision control, source control, and so on, have been around since not long after programmers first started to grapple with this problem. A lot of their core ideas can be found in classic Unix utilities like
patch, designed to examine the differences between individual files or apply changes to them from elsewhere. Nowadays, a respectable VCS can usually:
- Store a project’s entire history in a single directory.
- Track exactly how individual files changed, and when.
- Track who they were changed by.
- Log human-readable descriptions of changes.
- Merge sets of changes from different people.
- Display the differences between any two points in a project’s history.
- Store multiple concurrent branches of a project, with different changes on each.
Git is the most widely used VCS in the open source community, and GitHub, a web-based platform for hosting Git projects, has become the go-to place for collaborating on source code, supplanting sites like SourceForge and Google Code.
This stuff comes up a lot lately because we keep a lot of stuff in Git. If you’re looking to work with Adafruit-supplied code or submit changes, this may be a good place to start.