Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Git References

Git has many similarities to other source code version control systems, but there are important differences as well. There are a number of useful references to help you master your use of git

  • git Reference -- read this first to get a high-level overview in 15 minutes

  • Learn.git series -- another git introduction, including screen-casts (note: the text may be somewhat more informative than the embedded screencasts)

  • http://git-scm.com/course/svn.html -- git for svn users (but please, read the links above as well)

  • Pro Git book -- Written by Scott Chacon. Get to know git in more depth (~2 hrs?)

  • Git Book -- similar to the Pro Git book, but a bit more comprehensive

  • Useful git tips -- some useful less well known tips

  • An explanation from Mario Juric of how to think about git and how it internally does things. It also discusses merging and fast-forwards. Note that most of this is covered in the tutorials above, but if you're still confused, try reading it.
  • A video by Phil Marshall on using git and GitHub.

A cookbook style document, Git Crash Course, may help you understand the use of git for LSST/DM code development. 

Development Policies

Branch Management Policies

LSST DM code development is governed by various policies to maintain order in a large, distributed, multi-developer project. The policies are embodied in the workflows described below. Note: the branch management policy described here is drawn from the page: DM Branching Policy which is the authoritative source. 

Git Workflow

The following workflow is based on github-flow

...

  1. Verify which branch you are on. Ordinarily that would be the git master branch: 

    Code Block
    languagebash
    git branch
    or
    git status
  2. Create a new branch for ticket DM-9999, both locally and remotely: 

    Code Block
    languagebash
    git checkout -b tickets/DM-9999
    git push -u origin tickets/DM-9999
  3. Create or modify the source code. Commit often: Push periodically: 

    Code Block
    languagebash
    git commit -a
    git push
  4. Ask for a review. 
  5. After your code passes review, merge it into master: 

    Code Block
    languagebash
    themeConfluence
    git checkout master
    git pull master
    git merge --no-ff tickets/DM-9999
    git push

Git Tag Policy

When creating tags meant for the public (e.g., release tags), always use annotated tags (that is, 'git tag -a') or signed tags ('git tag -s'). These store the information on who created the tag, when, can be cryptographically signed, and can have a message attached to them. For example: 

...

Code Block
languagebash
themeConfluence
git tag -s -m "Version 4.7.0.0" 4.7.0.0

Summary of Git Operations

The following illustrates the sequence of operations one ordinarily executes with git during source code development. 

...