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:
- A consistent style (example: git format)
- Reference to a task number from a task tracking system, if it's not already tracked elsewhere
- 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
Git with Github
Source Control Lexicon
By Justin C
Source Control Lexicon
- 639