Terminology

I’ve spent most of this week writing the draft of my Progress Report (due in two weeks) and a brief report on the relevant version control systems. While the Progress Report is going slowly, the version control report is getting rather large and complicated, so I’m rewriting each section as a blog post in order to proof read it.

This post covers some basic terminology concerning version control systems and identifies synonymous terms in other systems. Each of these areas is also covered in detail in the Common Concepts posts. I’m trying not to assume any knowledge of each areas, apart from a general technical background.

Terminology

Repository: A repository is the database used by a version control system to track information about file versions.

Commit: A commit (also a revision, version or changeset) is a snapshot of a file at a particular point in time. Different systems use different terms, but they are all essentially the same thing.

Tip: A tip (also the HEAD when discussing the main development branch) is the latest commit for a particular branch.

Branch: Words fall short when trying to explain branches. They are exactly as they sound in real life, with the exception that branches can be merged together again. An excellent example along with diagrams is available at gitguru.

Parent: Every commit has a parent (except the initial commit). In the case of a merge commit, there may be two or more parents. Parents can be traced back to the initial commit.

Working Directory: The working directory (also the working copy or the checked out copy) is where the developer’s local, private copy of the repository is stored. The developer makes changes to the relevant files and then commits the changes to the repository.

Check Out: A file is checked out from the repository into the working directory. Similarly, when the file is checked in (also committed), it is saved back to the repository.

Clone: To clone a repository is to make a complete copy of it.

Merge: Merging combines the changes of two branches into one branch. This often results in the creation of a merge commit which identifies the two (or more) parent commits and a descriptive message. Merging algorithms are very much out of scope, but most systems use the three-way merge algorithm.

Diff/Patch: A diff is the difference between two files, as generated by the diff program. A patch is simply a diff, saved to a file in a specified format. The patch program can be used to ‘apply’ changes described in a patch to a file.

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 39 other followers