git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@mit.edu>
To: linux@horizon.com
Cc: git@vger.kernel.org
Subject: Re: [DRAFT] Branching and merging with git
Date: Fri, 17 Nov 2006 10:32:46 -0500	[thread overview]
Message-ID: <20061117153246.GA20065@thunk.org> (raw)
In-Reply-To: <20061116221701.4499.qmail@science.horizon.com>

On Thu, Nov 16, 2006 at 05:17:01PM -0500, linux@horizon.com wrote:
> I know it took me a while to get used to playing with branches, and I
> still get nervous when doing something creative.  So I've been trying
> to get more comfortable, and wrote the following to document what I've
> learned.
> 
> It's a first draft - I just finished writing it, so there are probably
> some glaring errors - but I thought it might be of interest anyway.

This is really, really good stuff that you've written!  Have you any
thoughts or suggestions about where this text should end up?
Personally, I think this information is actually more important to an
end-user than the current "part two" of the tutorial, which discusses
the object database and the index file.  Perhaps this should be "part
2", and the object database and index file should become "part 3"?  

It might also be a good to consider moving some of the "discussion"
portion the top-level git(7) man page into the object database and
index file discussion.  Right now, the best way to introduce git's
concepts (IMHO), is to start with the part 1 of the tutorial, then go
into the your draft branch/merging with git, then the current part 2
of the tutorial, and then direct folks to read the "discussion"
section of git(7).  Only then do they really have enough background
understanding of the fundamental concepts of git that they won't get
confused when they start talking to other git users, on the git
mailing list, for example.

It would be nice if there was an easy way to direct users through the
documentation in a way which makes good pedagogical sense.  Right now,
one of the reasons why life gets hard for new users is that the
current tutorials aren't enough for them to really undersatnd what's
going on at a conceptual level.  And if users start using "everyday
git" as a crutch, without the right background concepts, the human
brain naturally tries to intuit what's happening in the background,
but without reading the background docs, git is different enough that
they will probably get it wrong, which means more stuff that they have
to unlearn later.  

> * Git's representation of history
> 
> As you recall from Git 101, there are exactly four kinds of objects in
> Git's object database.  All of them have globally unique 40-character hex
> names made by hashing their type and contents.  Blob objects record file
> contents; they contain bytes.  Tree objects record directory contents;
> they contain file names, permissions, and the associated tree or blob
> object names.  Tag objects are shareable pointers to other objects;
> they're generally used to store a digital signature.

Hmm... this assumes that you've read the Git(7) discussion first.
There is enough information here though that maybe you don't need to
say "as you recall".  It might be enough to give a quick summary of
the concepts that are needed to understand the rest of your tutorial,
and then point to git(7) Discussion section for people who need to
learn more details.

> * Remotes files
> 
> Note that branches to fetch are identified by "Pull: " lines in the
> remotes file.  This is another example of the fetch/pull confusion.
> git-pull will be explained eventually.

Maybe we should change git so that a "Fetch: " line in the remotes
file works the same way as "Pull: ", and then recommend that people
use "Fetch: " in order to reduce confusion, as opposed to simply
explaining it away as "yet another example of the histororical
fetch/pull confusion"?

Thanks,


  parent reply	other threads:[~2006-11-17 15:34 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-16 22:17 [DRAFT] Branching and merging with git linux
2006-11-16 23:47 ` Junio C Hamano
2006-11-17  1:13   ` linux
2006-11-17  1:31     ` Junio C Hamano
2006-11-17  1:09 ` Junio C Hamano
2006-11-17  3:17   ` linux
2006-11-17  5:55     ` Junio C Hamano
2006-11-17  9:37 ` Jakub Narebski
2006-11-17  9:41 ` Jakub Narebski
2006-11-17 10:37 ` Jakub Narebski
2006-11-17 15:32 ` Theodore Tso [this message]
2006-11-17 15:57   ` Sean
2006-11-17 16:19     ` Nguyen Thai Ngoc Duy
2006-11-17 16:25       ` Marko Macek
2006-11-17 16:33         ` Petr Baudis
2006-11-17 16:34       ` Sean
     [not found]       ` <20061117113404.810fd4ea.seanlkml@sympatico.ca>
2006-11-17 16:53         ` Petr Baudis
2006-11-17 17:01           ` Sean
     [not found]           ` <20061117120154.3eaf5611.seanlkml@sympatico.ca>
2006-11-17 21:31             ` Petr Baudis
2006-11-17 22:36               ` Chris Riddoch
2006-11-17 22:50                 ` Petr Baudis
2006-11-17 23:30               ` Sean
2006-11-17 18:21   ` J. Bruce Fields
2006-11-18  0:13     ` linux
2006-11-18  0:32       ` Jakub Narebski
2006-11-18  0:40       ` Junio C Hamano
2006-11-18  1:11         ` Junio C Hamano
2006-11-20 23:51           ` [DRAFT 2] " linux
2006-11-22 11:02             ` [Patch to DRAFT 2 (1/2)] " Junio C Hamano
2006-11-22 11:02             ` [Patch to DRAFT 2 (2/2)] " Junio C Hamano
2006-11-22 13:36               ` Rene Scharfe
2006-12-04  1:19             ` [DRAFT 2] " J. Bruce Fields
2006-12-04  7:23               ` J. Bruce Fields
2006-12-04 10:56                 ` Johannes Schindelin
2006-12-15 21:38             ` Jakub Narebski
2006-12-15 21:41               ` J. Bruce Fields
2006-11-22 11:51           ` [DRAFT] " Junio C Hamano
2006-11-19 17:50     ` J. Bruce Fields
2006-11-19 17:59       ` Git manuals Petr Baudis
2006-11-19 18:16         ` Jakub Narebski
2006-11-19 19:50           ` Robin Rosenberg
2006-11-19 19:36         ` J. Bruce Fields
2006-11-26  4:01       ` [PATCH] Documentation: add a "git user's manual" J. Bruce Fields
2006-11-17 17:44 ` [DRAFT] Branching and merging with git J. Bruce Fields
2006-11-17 18:16   ` Jakub Narebski
2007-01-03 17:04 ` Theodore Tso
2007-01-03 17:08   ` Junio C Hamano
2007-01-04  5:28     ` linux
2007-01-04  6:11       ` Junio C Hamano
2007-01-07 23:44   ` J. Bruce Fields
2007-01-08  0:24     ` Junio C Hamano
2007-01-08  2:35       ` J. Bruce Fields
2007-01-08 13:04         ` David Kågedal
2007-01-08 14:03         ` Theodore Tso
2007-01-09  2:41           ` J. Bruce Fields
2007-01-09  8:46             ` Andreas Ericsson
2007-01-09 15:49               ` J. Bruce Fields
2007-01-09 16:58               ` Theodore Tso
2007-01-10  4:15                 ` J. Bruce Fields
2007-01-08  0:40     ` Theodore Tso
2007-01-08  0:46       ` J. Bruce Fields
2007-01-08  1:22         ` Jakub Narebski
2007-01-08  1:46         ` Horst H. von Brand
2007-01-08  2:22           ` J. Bruce Fields
2007-01-08 12:38         ` Guilhem Bonnefille
2007-01-09  4:17           ` J. Bruce Fields

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061117153246.GA20065@thunk.org \
    --to=tytso@mit.edu \
    --cc=git@vger.kernel.org \
    --cc=linux@horizon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).