git features for group projects

Take Group Projects to the
Next Level
with Github:IU
Barbara Hallock
[email protected]
2/15/2016, Wells Library E165, Bloomington, IN
Available from:
https://scholarworks.iu.edu/dspace/handle/2022/20625
© Trustees of Indiana University
Released under Creative Commons 3.0
unported license; license terms on last slide.
Agenda
•
•
•
•
•
Introductions
Basic foundations and terminology
git features for group projects
Demo
Questions / Comments
Introductions
• Barbara Hallock, MIS
• SOIC alumna by way of SLIS
• Currently work in UITS Research
Technologies
• Campus Bridging and Research
Infrastructure unit
• Senior NET+ / Campus Bridging Systems
Analyst
Agenda
•
•
•
•
•
Introductions
Basic foundations and terminology
git features for group projects
Demo
Questions / Comments
Basic Foundations and
Terminology
– What is version control?
– What is git?
– What is github?
– What is github:IU?
– Differences between github and
github:IU
What is version control?
• In its most basic form, version control
enables you to create the working
version of “save points” in your textbased files
• You’ve probably experienced a basic
version of this when working with a wiki
and being able to see multiple
revisions on a given page, revert to an
old revision, etc.
Image above: Version control at work, in a screenshot of a wiki page used for a
group meeting agenda by my department. Each revision number is clickable to
display that revision and the current revision can be forced to revert to a previous
one. One common example of our need for this capability is when two people try
to save edits to the page concurrently and the markdown gets messed up, making
things difficult to read.
What is version control?
• This concept has been applied outside
of wikis, primarily as a tool for
developers to use when writing
software
• This means more features than simply
“revert to version x”
What is version control?
• Version control is NOT, however,
intended to take the place of regularly
backing up multiple copies (on
multiple media) of your files!
What is git?
• git is one of many
version control
software options
available
• We’ll get into
features later
• One unique feature
of git is that it is
highly social
Above: Octocat, the git mascot.
Image courtesy of
https://octodex.github.com/original
What is github?
• An online host especially for git
repositories
• http://github.com
• A great place to find open source
projects in need of contributors, for
those of you out there who want to be
software engineers
What is github?
• So, when we talk about git, we’re
talking about the software for creating
and working with a repository. When
we talk about github, we’re talking
about the place where you can go to
access those repositories (if you’ve
been given access or they are public)
What is github:IU?
• Our private version of github
• All the same features
• https://github.iu.edu - only people with
IU accounts can log in and use the
service
• The main distinction is that you cannot
make a truly “public” repository on
github:IU
A note about
Intellectual Property
• Students – if you write some code and
host it on github:IU, that code remains
your property and you are free to do
with it what you will
• Employees – you will have signed an
agreement about intellectual property
you create on or with IU resources; ask
your manager for clarification or email
us
A note about
Intellectual Property (2)
• If you would like a truly public copy of
your repository from github:IU, it’s only
a matter of a few steps to migrate
everything over to github.com
• https://kb.iu.edu/d/aaye (or just
search for git in the kb)
Agenda
•
•
•
•
•
Introductions
Basic foundations and terminology
git features for group projects
Demo
Questions / Comments
git features for group projects
• These will primarily be useful to students
who are working with code, because
that’s what git is primarily intended to
be used with.
• However, git will work with any text files
you might want to do version control
on, and it has a number of features
that would be useful for group work
that isn’t programming-based.
diff
• Shows changes between two versions
of a file
• For you coders – a useful programming
tool whether you’re working singly or in
a group
• For you non-coders – think of this as a
text-only version of MS Word’s “Track
Changes”
Issues
• Great way to keep track of to-do lists for
a project
• Can also be used for bug reporting if
you’re doing code
• Think of it as a shared project-specific
ticketing system; each issue gets one
Assignee and everyone with access to
the repository can view and comment on
issues
• You can also create color-coded labels
Issues 2
• You can also create Milestones (which
are great for tracking what needs to
be done by a particular due date)
• Then, you can filter by a number of
different specific items such as
Milestones, Issues, etc.
Branches
• Ok, but what if you have to have
several features turned in on the same
date, or multiple people working on
the same (non-coding) assignment at
once?
• Branches allow you to designate
specific sub-tasks
Branches 2
• Each git repository starts with one
branch, the Master
• Each branch represents a line of
development. This may be a section in
a larger paper, or it may be a
particular feature or page in a web
app, or it might be a bug fix
Branches 3
• Each branch of a repository is like its own
separate version of the repository, so you
can make multiple simultaneous changes
without worrying about stepping on
anyone’s toes
• When a line of development is finished,
you can merge that branch back into
the Master without affecting anything but
the changes you made
Branches 4
• A new branch may be appropriate for
a single, tiny change (such as adding
a citation to a paper), or for a much
more involved one (such as
implementing a new feature on a web
app). The more branches you use, the
less likely you are to step on someone’s
toes by making a change.
Branches 5
• You can also update a branch from
the master, in case there are changes
that you need to account for.
Merge
• Ok, so all those branches would be
pretty useless if there weren’t a way to
merge them back together
• The merge command incorporates
changes from the selected branch
from the time the branch was created
back into the current version of the
Master branch, while preserving the
rest of it
Merge 2
C1
C2
C3
PAPER_TEXT
1
2
APPENDICES
3
A1
4
5
MASTER
E1
CITATIONS
Merge 3
• Best practices suggest that no
changes are ever made directly to the
MASTER branch; instead, make a new
branch, then merge in any changes
you make as often as is needed.
• Name your branches in a way that
people who are working with you
understand what they are for!
Forking
• You can fork an existing repository
from git – this downloads a copy of the
repository to your local machine and
your github account and saves all the
changes there – kind of like branches,
only you don’t have access to the
Master
Pull requests
• Let’s say you’ve forked a repository
and made some changes to the code
in it, fixing a small bug. Now, you’d like
to ask the owner of the repository to
consider making your changes a part
of the master project. You can issue a
pull request, which will give them the
option to look at what you’ve
changed and possibly merge it into
the repository.
Hint, hint…
• Doing this sort of work on open-source
projects hosted on github.com is a good
way to build up your portfolio and your
experience, future software engineers!
Also consider uploading little projects you
do for fun.
• On github:IU, this is most likely to be useful
in a case where the Professor has put
source files in one or more course
repository/ies, or when group members
agree to use it
Agenda
•
•
•
•
•
Introductions
Basic foundations and terminology
git features for group projects
Demo
Questions / Comments
Demo
• http://try.github.com
Agenda
•
•
•
•
•
Introductions
Basic foundations and terminology
git features for group projects
Demo
Questions / Comments
Questions / Comments?
• If you think of anything later, don’t
hesitate to reach out to us at
[email protected]
• Thank you!