Re: [PATCH 1/9] refs: Introduce pseudoref and per-worktree ref concepts
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Jul 24, 2015, 19:52 UTC
- Message-ID
- <344748CA1CA54D55A9F245FE2DBD23DC@PhilipOakley>
- In-Reply-To
- <1437713129-19373-2-git-send-email-dturner@twopensource.com>
From: "David Turner" <dturner@twopensource.com>
Show 27 quoted lines
> Add glossary entries for both concepts. > > Pseudorefs and per-worktree refs do not yet have special handling, > because the files refs backend already handles them correctly. Later, > we will make the LMDB backend call out to the files backend to handle > per-worktree refs. > > Signed-off-by: David Turner <dturner@twopensource.com> > --- > Documentation/glossary-content.txt | 17 +++++++++++++++++ > refs.c | 23 +++++++++++++++++++++++ > refs.h | 2 ++ > 3 files changed, 42 insertions(+) > > diff --git a/Documentation/glossary-content.txt > b/Documentation/glossary-content.txt > index ab18f4b..d04819e 100644 > --- a/Documentation/glossary-content.txt > +++ b/Documentation/glossary-content.txt > @@ -411,6 +411,23 @@ exclude;; > core Git. Porcelains expose more of a <<def_SCM,SCM>> > interface than the <<def_plumbing,plumbing>>. > > +[[def_per_worktree_ref]]per-worktree ref:: > + Refs that are per-<<def_worktree,worktree>>, rather than > + global. This is presently only <<def_HEAD,HEAD>>, but might > + later include other unsuual refs.
s/unsuual/unusual/
> + > +[[def_pseudoref]]pseudoref:: > + Files under `$GIT_DIR` whose names are all-caps, and that
s/and that/excluding 'HEAD', which is special./ ?
> + contain a line consisting of a <<def_sha1,SHA-1>> followed by
s/contain/Pseudorefs typically contain/ perhaps?
Show 12 quoted lines
> + a newline, and optionally some additional data. `MERGE_HEAD` > + and `CHERRY_PICK_HEAD` are examples. Unlike > + <<def_per_worktree_ref,per-worktree refs>>, these files cannot > + be symbolic refs, and never not have reflogs. They also > + cannot be updated through the normal ref update machinery. > + Instead, they are updated by directly writing to the files. > + However, they can be read as if they were refs, so `git > + rev-parse MERGE_HEAD` will work. > + > [[def_pull]]pull:: > Pulling a <<def_branch,branch>> means to <<def_fetch,fetch>> it and > <<def_merge,merge>> it. See also linkgit:git-pull[1].
[...]
The key points I'd picked out were:
* ALL_CAPS names
* acts like a ref <<>>, but separate from refs
* HEAD is special and not a pseudoref (i.e. see <<HEAD>>).
* CHERRY_PICK_HEAD and REVERT_HEAD are examples.
* three way split: refs/; pseudorefs; HEAD.
* one-level ALL_CAPS names are per worktree
* is a file in $GIT_DIR/ that always contains at least a SHA1.
-- Philip