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. (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.
Introduction to Git and Github
An IntroductionBy Christopher Pezza – Monfort College of Business 2012
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
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
Monfort College of Business - BACS 488 2/27/2012 4
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
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
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
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
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
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
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
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
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
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
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
“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
Monfort College of Business - BACS 488 2/27/2012 18
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
Monfort College of Business - BACS 488 2/27/2012 20
Monfort College of Business - BACS 488 2/27/2012 21
Monfort College of Business - BACS 488 2/27/2012 22
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