Presentation slides for a 40-minute talk demonstrating the advantages, benefits and challenges of using and deploying Git at Osgoode ITS's development process. Presented at the York University IT Conference held on May 21st, 2015. http://itconf.info.yorku.ca
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
York IT Day 2015: Talk - Faster and Smarter Development with Git
1. Faster and smarter
development with Git
Vince Chu
W/S Web Developer,
Osgoode ITS
Raj Perera
W/S Computer Operations
Technician, Osgoode ITS
2. Abstract
With mobile devices and an Internet filled with applications,
users expect delivery of new applications and services,
improvements and maintenance to be quick and seamless.
Distributed version control systems are one such class of tools
that development teams are adopting to better streamline their
process and workflow to meet these user needs.
This talk is a practical exploration of distributed version control
systems, particularly Git. We will share Osgoode ITS's
experience introducing these technologies to benefit in-house
development and operations, and its future plans to further
utilize Git to enhance productivity.
3. Who are we?
Vince Chu
W/S Web Developer,
Osgoode ITS
Assist in the development and
maintenance of web
applications at Osgoode ITS,
including the main website,
blogs, digital signage, web
application middleware and
other custom software
development projects.
Raj Perera
W/S Computer Operations
Technician, Osgoode ITS
Assist in the provisioning,
configuring and securing all
physical and virtual servers and
appliances at Osgoode ITS.
Assist in planning future
network infrastructure
enhancements and maintaining
current infrastructure.
4. Agenda +
Objectives
About a year and half ago at Osgoode ITS, we started
a pilot initiative to use and migrate some of our
development projects to Git, and we want to share
with you some things we’ve learned so far in the
process.
5. Agenda +
Objectives
Introduction to Version Control
What is Git?
Why use Git?
Share some tools and resources
End-to-end Demo
Discuss best practices
Explore deployment options: In the Cloud or On-premise
Share what we’ve learned at Osgoode ITS using Git
6. Create things Edit thingsSave things Save things again
As knowledge
workers
Developers, designers,
content creators, and
others….
Our daily tasks:
7. …What changes were made?
…When were they made?
…Why were they made?
If we save
things again
and again…
How we know…
9. We often collaborate as a team
Changing the same code, resources, assets… at the same
As knowledge
workers
Developers, designers,
content creators, and
others….
10. …Know what changes were made for each?
…Combine our work together?
…Know who, when or why a change was made?
…Which is the latest copy?
If everyone
works on the
same files…
How can we…
18. Version
Control
Version control is a system
that records changes to a
file or set of files over time
so that you can recall
specific versions later.
Manages of changes to
documents, computer
programs, large web sites,
and other collections of
information.
Takes snapshots of the files
19. What is Git?
Version Control
Git is a distributed version control system with an emphasis
on speed, data integrity, and support for distributed, non-
linear workflows.
Each user clones a copy of the entire project, repository, to
their own computer, makes changes locally, saves, commits,
the changes and when ready, publishes or pushes out the
changes to a remote server for the rest of the team access or
pull from.
20. Why Git?
Compared to traditional
version control systems
Unlike traditional version control systems, Git is not a
centralized system.
No canonical, reference copy of the codebase exists by
default; only working copies.
Common operations (such as commits, viewing history, and
reverting changes) are fast, because there is no need to
communicate with a central server.
Communication is only necessary when sharing changes
among other peers.
Each working copy effectively functions as a remote backup
of the codebase and of its change-history, protecting against
data loss.
21. Workflows
Git-flow model
Work in
progress on
“next release”
Next
production
release
Next
production
release
Next
production
release
develop master
A branch is like an
alternate universe for
your project files.
22. Workflows
Git-flow model
Work in
progress on
“next release”
Next
production
release
Next
production
release
Next
production
release
develop master
develop
feature
branches
23. Workflows
Git-flow model
Work in
progress on
“next release”
Next
production
release
Next
production
release
Next
production
release
develop master
QA : OK!
QA : OK!
QA : OK!
31. At Osgoode
Artist In Residence Digital
Project 2013-2014
In May 2014, working with Cindy
Blazevic, Osgoode’s inaugural Artist
in Residence, we created a
responsive, mobile-first web
application that presents the stories
of the inmates and workers at the
Kingston Penitentiary with imagery,
recorded interviews and videos back-
dropped by an interactive map of the
prison.
34. Best Practice
1. Commit early. Commit often.
2. Meaningful commit messages.
3. Agree on a workflow
Branching and a merging model
35. Lessons
Learned
Git works great text documents
But not so well for images, audio, videos, etc… (User content)
Database is not tracked
Commit messages are not documentation
Smaller commit and modular programming are better
Branching for experimentation
Commit early. Commit often
36. Lessons
Learned
Git works great text documents
But not so well for images, audio, videos, etc… (User content)
Database is not tracked
Commit messages are not documentation
Smaller commit and modular programming are better
Branching for experimentation
Commit early. Commit often
37. Future Plans
Migrate all websites and blogs to Git
Explore Large File Support (LFS) Extension to help solve issues
involving user content files.
Team wide adoption
Explore options for integrating issue tracking and project
management tools like Jira, Confluence and Trello with Git
Explore continuous integration for testing and seamless
updates across development and production environments
Explore snapshotting of the database