The Single Most Important Thing I Learned From My CS Education

Using this presentation

More detailed information

Next major concept

Source Control

syn: "version control", "revision control"

"The management of changes to documents, computer programs, large web sites, and other collections of information."

Wikipedia, 3/12/2015

Checkout

Acquire a project file for editing

This process may involve locking and/or flagging a portion of the project to prevent teammates from creating conflicting edits while you work.

Checkin / Commit

Submit files with edits back to source control

Depending on which source control system you use, this may involve addressing merge conflicts, reviewing the submitted changes to the project, etc.

Commit Message

A short description of how your commit changes the project

Descriptive commit messages can be even more useful than commenting your code. Especially when they make specific references to the previous state of the project.

On good commit messages

What should a commit message look like?

Different teams will need to track different things within their projects. However, most projects will probably want:

  1. A consistent style (example: git format)
  2. Reference to a task number from a task tracking system, if it's not already tracked elsewhere
  3. An explanation of how and why this commit changes the project (commit message examples)

Merge

The process by which a checkin/commit is factored into the code base.

Most modern source control systems take care of this automatically except when there's a...

Merge Conflict

An unavoidable part of collaborating with other developers

At some point when you are working on project someone (possibly you) will edit a file someone else is working on at the same time and you will need to decide which version of the file is the version to accept into the project.

Branch

A contiguous series of commits that deal with a specific project goal

Branches are used to encapsulate different parts of a project and keep them separate for easy maintenance. For example: keeping separate feature branches and production branches.

Change Log

(syn. "log", "history")

A list of all commits in order since the beginning of the project

Pretty much any time a developer would need to perform an operation their source control tool, they will want to consult the log to see the state of the project. Remember commit messages? This is why they're so important.

How does BSG use source control?

Include

  • Project source code
  • Project-specific configuration settings
    • Build tool configs
    • Framework configs
    • 3rd-party tool dependencies
  • Static project-specific resources

Exclude

  • Everything else
    • Build results
    • 3rd-party source code

Clearing the Air

BSG is not replacing Microsoft TFS source control with git.

 

We are training students on git for collaboration projects with the Open Source Lab and to better prepare them for work life at companies that rely on git.

Further Reading

Microsoft Team Foundation Server

Source Control Lexicon

By Justin C

Source Control Lexicon

  • 639