Skip to content

Version Control and Git

tobey edited this page Apr 10, 2015 · 4 revisions

We are using the software Git for version control and source code management. The source code is in turn hosted on Github.

Key Terms/Concepts:

  • git is the version control software
  • github is a website that uses git and provides hosting as well as other features like this wiki, and a bug tracker (Issues)
  • "Pull Requests" are a github specific term.
  • git is really a general tool for managing a certain type of "tree" data structure. As such, there are many ways it can be used correctly and it is up to us to find a pattern that works for our group.
  • Github the website/business is built around a certain pattern of git usage (which we will use for the most part)
  • Forks, and Clones:
  • ua-snap has the main "fork" of our project
  • each of us additionally has a fork (hosted on github)
  • for actual work, you will "clone" from a given fork (usually your own)
  • Our convention is that your own personal fork is called origin and the ua-snap fork is called upstream

Branching Model

We are using two long-running branches for this project: master and devel. In addition we are using the "Integration Manager Workflow" and Github's Pull Requests to manage project collaboration.

Here is a graphic depicting a few key concepts.

  • Note that we are using one more "long running" branch named devel where we will be doing the bulk of our work. devel can be considered to be pretty stable, and when we reach a point of true stability, we will merge into master
  • In general commits on master (or devel) will represent "stable" code while commit on other branches might be "unstable"
  • The commits on the lower half of the graphic represent "experiment" branches.