Merge branch 'nk/ref-doc' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 1 Aug 2011 21:44:24 +0000 (14:44 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 1 Aug 2011 21:44:24 +0000 (14:44 -0700)
* nk/ref-doc:
glossary: clarify description of HEAD
glossary: update description of head and ref
glossary: update description of "tag"
git.txt: de-emphasize the implementation detail of a ref
check-ref-format doc: de-emphasize the implementation detail of a ref
git-remote.txt: avoid sounding as if loose refs are the only ones in the world
git-remote.txt: fix wrong remote refspec

Documentation/git-check-ref-format.txt
Documentation/git-remote.txt
Documentation/git.txt
Documentation/glossary-content.txt
index 205d83dd0b281d59e0f53284d29846c8eb58a246..c9fdf84a08847bd8cb8c9ce1e2f50241975e267c 100644 (file)
@@ -18,9 +18,12 @@ Checks if a given 'refname' is acceptable, and exits with a non-zero
 status if it is not.
 
 A reference is used in git to specify branches and tags.  A
-branch head is stored under the `$GIT_DIR/refs/heads` directory, and
-a tag is stored under the `$GIT_DIR/refs/tags` directory (or, if refs
-are packed by `git gc`, as entries in the `$GIT_DIR/packed-refs` file).
+branch head is stored in the `refs/heads` hierarchy, while
+a tag is stored in the `refs/tags` hierarchy of the ref namespace
+(typically in `$GIT_DIR/refs/heads` and `$GIT_DIR/refs/tags`
+directories or, as entries in file `$GIT_DIR/packed-refs`
+if refs are packed by `git gc`).
+
 git imposes the following rules on how references are named:
 
 . They can include slash `/` for hierarchical (directory)
index 528f34a13106836c1eace8c5d8972543b6fcc121..5a8c5061f3701c57bab75b2b4c70ad620f7e536f 100644 (file)
@@ -60,11 +60,11 @@ the remote repository.
 +
 With `-t <branch>` option, instead of the default glob
 refspec for the remote to track all branches under
-`$GIT_DIR/remotes/<name>/`, a refspec to track only `<branch>`
+the `refs/remotes/<name>/` namespace, a refspec to track only `<branch>`
 is created.  You can give more than one `-t <branch>` to track
 multiple branches without grabbing all branches.
 +
-With `-m <master>` option, `$GIT_DIR/remotes/<name>/HEAD` is set
+With `-m <master>` option, a symbolic-ref `refs/remotes/<name>/HEAD` is set
 up to point at remote's `<master>` branch. See also the set-head command.
 +
 When a fetch mirror is created with `\--mirror=fetch`, the refs will not
@@ -92,24 +92,25 @@ configuration settings for the remote are removed.
 
 'set-head'::
 
-Sets or deletes the default branch (`$GIT_DIR/remotes/<name>/HEAD`) for
+Sets or deletes the default branch (i.e. the target of the
+symbolic-ref `refs/remotes/<name>/HEAD`) for
 the named remote. Having a default branch for a remote is not required,
 but allows the name of the remote to be specified in lieu of a specific
 branch. For example, if the default branch for `origin` is set to
 `master`, then `origin` may be specified wherever you would normally
 specify `origin/master`.
 +
-With `-d`, `$GIT_DIR/remotes/<name>/HEAD` is deleted.
+With `-d`, the symbolic ref `refs/remotes/<name>/HEAD` is deleted.
 +
-With `-a`, the remote is queried to determine its `HEAD`, then
-`$GIT_DIR/remotes/<name>/HEAD` is set to the same branch. e.g., if the remote
+With `-a`, the remote is queried to determine its `HEAD`, then the
+symbolic-ref `refs/remotes/<name>/HEAD` is set to the same branch. e.g., if the remote
 `HEAD` is pointed at `next`, "`git remote set-head origin -a`" will set
-`$GIT_DIR/refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will
+the symbolic-ref `refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will
 only work if `refs/remotes/origin/next` already exists; if not it must be
 fetched first.
 +
-Use `<branch>` to set `$GIT_DIR/remotes/<name>/HEAD` explicitly. e.g., "git
-remote set-head origin master" will set `$GIT_DIR/refs/remotes/origin/HEAD` to
+Use `<branch>` to set the symbolic-ref `refs/remotes/<name>/HEAD` explicitly. e.g., "git
+remote set-head origin master" will set the symbolic-ref `refs/remotes/origin/HEAD` to
 `refs/remotes/origin/master`. This will only work if
 `refs/remotes/origin/master` already exists; if not it must be fetched first.
 +
index 3c7a832343ea983f7122c5d33429a4129fdba70a..0172cd70149914897862fbf0f3f221c7ef31ea5c 100644 (file)
@@ -523,16 +523,15 @@ Any git command accepting any <object> can also use the following
 symbolic notation:
 
 HEAD::
-       indicates the head of the current branch (i.e. the
-       contents of `$GIT_DIR/HEAD`).
+       indicates the head of the current branch.
 
 <tag>::
        a valid tag 'name'
-       (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
+       (i.e. a `refs/tags/<tag>` reference).
 
 <head>::
        a valid head 'name'
-       (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
+       (i.e. a `refs/heads/<head>` reference).
 
 For a more complete list of ways to spell object names, see
 "SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
index 8f62d1abeeb9b80fd36aa8ea12120c640a98414e..3595b586bc35d865a08ab538a1908cb2abe8e1a8 100644 (file)
@@ -161,8 +161,8 @@ to point at the new commit.
 
 [[def_head]]head::
        A <<def_ref,named reference>> to the <<def_commit,commit>> at the tip of a
-       <<def_branch,branch>>.  Heads are stored in
-       `$GIT_DIR/refs/heads/`, except when using packed refs. (See
+       <<def_branch,branch>>.  Heads are stored in a file in
+       `$GIT_DIR/refs/heads/` directory, except when using packed refs. (See
        linkgit:git-pack-refs[1].)
 
 [[def_HEAD]]HEAD::
@@ -170,8 +170,8 @@ to point at the new commit.
        working tree>> is normally derived from the state of the tree
        referred to by HEAD.  HEAD is a reference to one of the
        <<def_head,heads>> in your repository, except when using a
-       <<def_detached_HEAD,detached HEAD>>, in which case it may
-       reference an arbitrary commit.
+       <<def_detached_HEAD,detached HEAD>>, in which case it directly
+       references an arbitrary commit.
 
 [[def_head_ref]]head ref::
        A synonym for <<def_head,head>>.
@@ -382,8 +382,9 @@ should not be combined with other pathspec.
 
 [[def_ref]]ref::
        A 40-byte hex representation of a <<def_SHA1,SHA1>> or a name that
-       denotes a particular <<def_object,object>>. These may be stored in
-       `$GIT_DIR/refs/`.
+       denotes a particular <<def_object,object>>. They may be stored in
+       a file under `$GIT_DIR/refs/` directory, or
+       in the `$GIT_DIR/packed-refs` file.
 
 [[def_reflog]]reflog::
        A reflog shows the local "history" of a ref.  In other words,
@@ -459,14 +460,14 @@ should not be combined with other pathspec.
        command.
 
 [[def_tag]]tag::
-       A <<def_ref,ref>> pointing to a <<def_tag_object,tag>> or
-       <<def_commit_object,commit object>>. In contrast to a <<def_head,head>>,
-       a tag is not changed by a <<def_commit,commit>>. Tags (not
-       <<def_tag_object,tag objects>>) are stored in `$GIT_DIR/refs/tags/`. A
-       git tag has nothing to do with a Lisp tag (which would be
-       called an <<def_object_type,object type>> in git's context). A
-       tag is most typically used to mark a particular point in the
-       commit ancestry <<def_chain,chain>>.
+       A <<def_ref,ref>> under `refs/tags/` namespace that points to an
+       object of an arbitrary type (typically a tag points to either a
+       <<def_tag_object,tag>> or a <<def_commit_object,commit object>>).
+       In contrast to a <<def_head,head>>, a tag is not updated by
+       the `commit` command. A git tag has nothing to do with a Lisp
+       tag (which would be called an <<def_object_type,object type>>
+       in git's context). A tag is most typically used to mark a particular
+       point in the commit ancestry <<def_chain,chain>>.
 
 [[def_tag_object]]tag object::
        An <<def_object,object>> containing a <<def_ref,ref>> pointing to