git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "John M. Dlugosz" <ngnr63q02@sneakemail.com>
Cc: git@vger.kernel.org
Subject: Re: setting up tracking on push
Date: Sun, 15 Mar 2009 11:33:58 -0700	[thread overview]
Message-ID: <7v1vsy8wkp.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <4845-91917@sneakemail.com> (John M. Dlugosz's message of "Sat, 14 Mar 2009 22:28:36 -0500")

"John M. Dlugosz" <ngnr63q02@sneakemail.com> writes:

> Jay Soffian jaysoffian-at-gmail.com |git| wrote:
>> - The branches under refs/remotes (those shown by "git branch -r") are
>> remote tracking branches. So that tells git fetch where to fetch
>> from, which remote branches to
>> fetch, and where to store those branches locally. In this case, each
>> branch under refs/heads/ on git://git.kernel.org/pub/scm/git/git.git
>> will be fetched and stored locally as refs/remotes/origin/. Locally
>> the branches are called "remote tracking branches".
>
> Things under refs/remotes are remote tracking branches, and local
> branches (under refs/heads) that automatically updated based on a
> fetch ("store locally" means merge or rebase, right?) are also called
> remote tracking branches.
>
> I think that's why some of us are confused.

True; the latter wording invites confusion.

What fetch updates directly from remote site are called "remote tracking
branches".  The local branches you intend to keep up to date with respect
to one remote tracking branch is sometimes said to "track" the remote
tracking branch, but because I find it confusing to use the same verb for
this other purpose, I tend to say that local branch (that "tracks" the
other one)

 (1) _forked_ from; or
 (2) _builds_ on

the remote tracking branch, in order to avoid confusion.

Historically, refs/remotes/ hierarchy did not exist, and "git clone"
created these refspecs after cloning from a two branch project:

    refs/heads/master:refs/heads/origin
    refs/heads/maint:refs/heads/maint

and created a local master starting at 'origin'.

The expectation was that everybody would work on 'master', occasionally
referring to 'maint', and because 'master' is always checked out, avoid 
'fetch' from disturbing it by using a separate local branch 'origin' to
keep track of the advance of the other side, while updating 'maint' that
is not checked out directly.

This was the layout used in the good old times, and worked well *only* in
the most simplistic case.  In reality, people used far more branches and
worked on branches other than master.

To fix that, refs/remotes/ hierarchy was introduced, and we started
treating the tracking part of master the same way as other branches, i.e.

    refs/heads/*:refs/remotes/origin/*

The local 'maint' in the old layout was called a remote tracking branch,
too, even though it was local.  These days, if you use the default layout
"git clone" gives you, you can say refs under refs/remotes/ hierarchy are
all remote tracking branches, and you do not have any remote tracking
branches that are local.

      parent reply	other threads:[~2009-03-15 18:38 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-06  3:07 setting up tracking on push Miles Bader
2009-03-06  3:17 ` John Tapsell
2009-03-06  4:49 ` Jay Soffian
2009-03-06 10:45   ` Johannes Schindelin
2009-03-06 11:15     ` Miles Bader
2009-03-06 14:15       ` Jeremy O'Brien
2009-03-06 15:43         ` Jay Soffian
2009-03-06 16:29           ` Miles Bader
2009-03-10 20:26             ` Marc Branchaud
2009-03-10 23:09               ` Jeff King
2009-03-11  1:52                 ` Jay Soffian
2009-03-11  2:04                   ` Jeff King
2009-03-11  2:59                     ` Jay Soffian
2009-03-11  3:06                       ` Jeff King
2009-03-11  3:40                         ` Jay Soffian
2009-03-11  3:44                         ` Jay Soffian
2009-03-11  3:57                           ` Jeff King
2009-03-11  4:15                             ` Jay Soffian
2009-03-24  9:58                               ` Jakub Narebski
2009-03-11  4:37                     ` Junio C Hamano
2009-03-11  4:56                       ` Miles Bader
2009-03-11  5:03                         ` Miles Bader
2009-03-11  5:22                       ` Jay Soffian
2009-03-11 21:39                         ` Marc Branchaud
2009-03-11  6:32                       ` Jeff King
2009-03-11 10:02                       ` Nanako Shiraishi
2009-03-11 16:40                         ` Jeff King
2009-03-12  0:08 ` John M. Dlugosz
2009-03-12  0:58   ` Jay Soffian
2009-03-12  1:11     ` Junio C Hamano
2009-03-12  1:16       ` Jay Soffian
2009-03-12  1:14     ` Jay Soffian
2009-03-12  1:21       ` Jay Soffian
2009-03-15  3:28       ` John M. Dlugosz
2009-03-15 12:36         ` Jay Soffian
2009-03-16  1:07           ` John M. Dlugosz
2009-03-16  1:43             ` Jay Soffian
2009-03-15 18:33         ` Junio C Hamano [this message]

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=7v1vsy8wkp.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=ngnr63q02@sneakemail.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).