Subject: Re: Is ./git/branches used for anything?

From: Jakub Narebski <[email-masked]>
Date: Tue, 02 Feb 2010 07:00:09 -0800 (PST)

Ron Garret <[email-masked]> writes:

> If so, what?  .git/refs/heads seems to contain all the branch info, so 
> what is the branches directory for?

See gitrepository-layout(5):

  branches::
        A slightly deprecated way to store shorthands to be used
        to specify URL to 'git fetch', 'git pull' and 'git push'
        commands is to store a file in `branches/<name>` and
        give 'name' to these commands in place of 'repository'
        argument.

and git-pull(1):

  REMOTES
  -------

  The name of one of the following can be used instead
  of a URL as `<repository>` argument:

  * a remote in the git configuration file: `$GIT_DIR/config`,
  * a file in the `$GIT_DIR/remotes` directory, or
  * a file in the `$GIT_DIR/branches` directory.

  All of these also allow you to omit the refspec from the command line
  because they each contain a refspec which git will use by default.

  [...]

  Named file in `$GIT_DIR/branches`
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  You can choose to provide the name of a
  file in `$GIT_DIR/branches`.
  The URL in this file will be used to access the repository.
  This file should have the following format:

  ------------
          <url>#<head>
  ------------

  `<url>` is required; `#<head>` is optional.

  Depending on the operation, git will use one of the following
  refspecs, if you don't provide one on the command line.
  `<branch>` is the name of this file in `$GIT_DIR/branches` and
  `<head>` defaults to `master`.

Ancient history, if somewhat useful for some workflow[1].  It came from
Cogito, which was alternate UI for git.

[1] Namely one of main Linux kernel developers (Linus lieutienants)
has scripts around this way of specifying remote information.

-- 
Jakub Narebski
Poland
ShadeHawk on #git