From e6c7192d42425ed0dce7753120092d3d41e51ea7 Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Thu, 26 Mar 2009 23:54:10 -0400 Subject: Clear up some text, add a link to the git wiki. --- git.org | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/git.org b/git.org index 59f6c77..7292502 100644 --- a/git.org +++ b/git.org @@ -1,8 +1,11 @@ -* democratized Version Control Systems (dVCS) +* dVCS by way of git - Sharing complete repositories is a simple concept which poses subtle - constraints in whose solution yields a form of democratized version - control. + Sharing complete repositories is a simple concept which involves a + subtle paradigm shift, which in turn opens up interesting new + pastures. + + In this talk I will demonstrate some of these constraints + and their solutions, as implemented in git. * A look back at SVN @@ -22,7 +25,7 @@ Obviously this was all workable, but it didn't exactly engender itself to lazy people like myself. The existance and popularity of CVSup in spite of being written in Modula 3 shows the value of - repository sharing. + repository sharing. You can think of git as CVSup done right. * Constraints @@ -30,7 +33,7 @@ So: -*** Linear history is a thing of the past +*** Offline operation means history is frequently not linear *** Merging must be easy *** Sharing changes must be easy @@ -40,13 +43,13 @@ Time is no longer a useful identifier when comparing the history of disparate repositories, and thus can't be used for commit - identifiers. + identifiers. Something new must be found. -** git uses SHA hashes to identify repository objects +*** git uses SHA hashes to identify repository objects - SHA is a critical factor in determining correct sharing of file - data. The hash is computed from file contents and mapped to - file names. + SHA-1 hashes are the basic identifier of every object in the git + system, which yields a bunch of nice properties we'll get into + later. ** Merging is elevated to a first class operation @@ -85,9 +88,7 @@ its contents. The hash is easy to compute and provides good entropy properties when building a hash table. -*** History is immediately verifiable (barring hash collisions) - -*** Some measure of security comes for free +**** Some measure of security comes for free All commits are effectively signed by all their previous commits, so verifying a repository becomes trivial given only a valid commit id. @@ -95,8 +96,9 @@ ** merge commits In git, a commit can have many parents, as opposed to SVN where a - commit can have only one parent. Merge commits can also contain - blobs themselves to mark conflict resolutions. + commit can have only one parent. All commits contain a tree, so when + you had to resolve conflicts from a merge, those will be contained + in the commit's tree object. ** SHA hashes are a pain to type @@ -107,9 +109,12 @@ *** tags are fixed refs - Tags have optional descriptions and GPG signatures. + Tags always refer to a commit, but can also contain a cryptographic + signature and message, in which case the ref points to a tag object, + which, in turn, points to a commit. For almost any use of tags, you + don't need to care about this, since git is fairly smart about it. -*** branches and HEAD +*** branches and HEAD are symbolic refs Branches are moving refs and always reference their tips. HEAD is a pointer to the tip of the current branch. @@ -176,6 +181,9 @@ # Git - SVN Crash Course + # GitWiki + + # Git User's Manual -- cgit v1.2.3