2. Version Control refers to
management of changes
to documents, programs,
large web sites and other
information stored as
computer files.
Used in software
development, where a
team of people may
change the same files.
Monfort College of Business - BACS 488
2/27/2012 2
3. git /'ɡɪt/ -- Git is an
extremely
fast, efficient, distributed
version control system
ideal for the collaborative
development of software.
Invented by Linus Torvalds
Version Control Tool
Powerful
Flexible
Low-Overhead
Monfort College of Business - BACS 488
2/27/2012 3
5. Facilitate Distributed
Development
Scale to handle thousands of
developers
Perform quickly and
efficiently
Maintain integrity and trust
Enforce accountability
Immutability
Atomic transactions
Support and encourage
branched development
Complete repositories
A clean internal design
Be free, as in freedom
Monfort College of Business - BACS 488
2/27/2012 5
6. Allow parallel as well as
independent and
simultaneous
development in private
repositories without the
need for constant
synchronization with a
central repository
Allow multiple developers
in multiple locations even
if some of them are offline
temporarily
Monfort College of Business - BACS 488
2/27/2012 6
7. Thousands of developers
contribute to each Linux
release
Handle a very large
number of
developers, whether they
are working on the same
or on different parts of a
common project
VCS must integrate all
work reliably
Monfort College of Business - BACS 488
2/27/2012 7
8. Needs to support a large
volume of update
operations that would be
made on the Linux Kernel
Individual update
operations and network
transfer operations have
to be very fast
To save space and thus
transfer
time, compression and
“delta” techniques would
be needed
Monfort College of Business - BACS 488
2/27/2012 8
9. Git uses a common
cryptographic hash
function, called SHA1, to
name and identify objects
within its database
Monfort College of Business - BACS 488
2/27/2012 9
10. Git enforces a change log
on every commit that
changes a file
Git ensures that changes
will not happen
mysteriously to files under
version control because
there is an accountability
trail for all changes.
Monfort College of Business - BACS 488
2/27/2012 10
11. Once objects have been
created and placed in the
database, they cannot be
modified
Objects can be recreated
differently, but the
original data cannot be
altered.
The entire history stored
within the version control
database is also
immutable.
Monfort College of Business - BACS 488
2/27/2012 11
12. A number of different but
related changes are
performed either all
together or not at all
Ensures that the version
control database is not
left in a partially changed
(possibly corrupted) state
while an update or
commit is happening
Monfort College of Business - BACS 488
2/27/2012 12
13. VCSs can name different
genealogies of
development within a
single project
VCS can also split a single
line of development into
multiple lines and then
unify, or merge, the
disparate threads
Git calls a line of
development a branch
and assigns each branch a
name
Monfort College of Business - BACS 488
2/27/2012 13
14. In order to avoid
individual developers
needing to query a
centralized repository
server for historical
revision information, each
repository has a complete
copy of all historical
revisions of every file.
Monfort College of Business - BACS 488
2/27/2012 14
15. Git’s object model has
simple structures that
capture fundamental
concepts for raw data,
directory structure,
recording changes, etc.
Coupling the object model
with a globally unique
identifier technique
allowed a very clean data
model that could be
managed in a distributed
development
environment.
Monfort College of Business - BACS 488
2/27/2012 15
16. “Free software” means
software that respects
users' freedom and
community.
users have the freedom
to
run, copy, distribute, stud
y, change and improve
the software
Free Software is a matter
of liberty, not price: Think
“free” as in “free speech,”
not as in “free beer”.
Example: GNU Licenses
Monfort College of Business - BACS 488
2/27/2012 16
19. social networking
functionality such as
feeds, followers and the
network graph to display
how developers work on
their versions of a
repository.
a pastebin-style site called
Gist
wikis for individual
repositories
web pages that can be
edited through a Git
repository
Monfort College of Business - BACS 488
2/27/2012 19
23. White, Tom (2011). Version
Control with Git: Powerful Tools
and Techniques for
Collaborative Software
Developement. Sebastopol, CA:
O’Reilly.
Wikipedia – Git (software)
What is Free Software?
From the GNU Project
Monfort College of Business - BACS 488
2/27/2012 23
Editor's Notes
A tool that manages and tracks different versions of software or other content is referred to generically as a version control system (VCS), a source code manager (SCM), or a revision control system (RCS).
Linus Torvalds inventedGit to support the development of the Linux kernel, but it has since proven valuable to a wide range of projects. Git development began after many Linux kernel developers chose to give up access to the proprietaryBitKeeper system.[9] (The copyright holder of BitKeeper, Larry McVoy, withdrew free use of the product after he claimed that Andrew Tridgell had reverse-engineered the BitKeeper protocols.)Torvalds wanted a distributed system that he could use like BitKeeper, but none of the available free systems met his needs, particularly his performance needs.
Using a distributed model instead of a centralized model also ensured that network latency would not hinder daily development.
How do you know that data hasn’t been altered in transition from one developer to the next, or from one repository to the next? How do you know that the data in a Git repository is even what it purports to be?
One of the key aspects of a version control system is knowing who changed files, and if at all possible, why. The information stored in that change log is left up to the developer project requirements, management, convention, etc.
Using immutable objects has several advantages, including very quick comparison for equality.
Git implements atomic transactions by recording complete, discrete repository states that cannot be broken down into individual or smaller state changes.
Since merging had been such a pain in previous systems, Linus wanted the new system to support clean, fast, and easy merging.
The Idea: When users don't control the program, the program controls the users. The developer controls the program, and through it controls the users. This nonfree or “proprietary” program is therefore an instrument of unjust power.