is a distributed -like File Manager created by Tudor Hulubei and Andrei Pitis .
Git's design was inspired by or StGIT .2 However, the core Git project has since become a complete revision control system that is usable directly.3 Several high-profile software projects now use Git for revision control, most notably the Linux Kernel .http://git.or.cz/gitwiki/GitProjects
Git's current Software Maintenance is overseen by Junio Hamano . Released under the GNU General Public License , version 2, Git is Free Software .
Linus Torvalds has Quip ped about the name " Git ", which is a British slang for a stupid or unpleasant person: The official Git wiki also gives a number of alternative explanations for the name. GitFaq: Why the 'git' name?
Git's design is a synthesis of Torvalds's experience maintaining a large distributed development project, his intimate knowledge of file system performance, and an urgent need to produce a working system in short order. (See the History Section for details.) These influences led to the following implementation choices:
- Strong support for non-linear development. Git supports rapid and convenient branching and merging, and includes Specific Tools for visualizing and navigating a non-linear development history. A core assumption in Git is that a change will be merged more often than it is written, as it is passed around various reviewers. Torvalds himself does the most merging and least direct editing, so he has made sure that it works well.
- Distributed development. Like Darcs , BitKeeper , Mercurial , SVK , and Monotone , Git gives each developer a local copy of the entire development history, and changes are copied from one such repository to another. These changes are imported as additional development branches, and can be merged in the same way as a locally developed branch.
- Repositories can be easily published via HTTP , FTP , Ssh , Rsync , or a special git protocol. Git also has a CVS server emulation, which allows one to use existing CVS clients and IDE plugins to access Git repositories.
- Efficient handling of large projects. Git is very fast,4 and scales well. It is commonly an Order Of Magnitude faster than other revision control systems, and two orders of magnitude faster on some operations.5, benchmarking "git diff" against "bzr diff", and finging the former 100x faster in some cases.6, observing that "git log" is 100x faster than "svn log" because the latter has to contact a remote server.
- Cryptographic authentication of history. The Git history is stored in such a way that the name of a particular revision (a "commit" in Git terms) depends upon the complete development history leading up to that commit. Once it is published, it is not possible to change the old versions without it being noticed. ( Monotone also has this property.)
- Pluggable merge strategies. As part of its toolkit design, git has a well-defined model of an incomplete merge, and it has multiple algorithms for completing it, culminating in telling the user that it is unable to complete the merge automatically and manual editing is required. It is thus easy to experiment with new merge algorithms.
|
|
|