git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

Previous: Junio C HamanoNext: David Turner
Message 7 of 20 in “Pseudorefs”
  1. 0/9 PseudorefsDavid Turner, Jul 24, 2015
  2. 1/9 refs: Introduce pseudoref and per-worktree ref conceptsDavid Turner, Jul 24, 2015
  3. Eric SunshineJul 24, 2015
  4. Junio C HamanoJul 24, 2015
  5. David TurnerJul 24, 2015
  6. Junio C HamanoJul 24, 2015
  7. Philip OakleyJul 24, 2015
  8. David TurnerJul 24, 2015
  9. 2/9 notes: replace pseudorefs with real refsDavid Turner, Jul 24, 2015
  10. 3/9 bisect: do not use update-ref for BISECT_HEADDavid Turner, Jul 24, 2015
  11. 4/9 tests: treat FETCH_HEAD as a pseudorefDavid Turner, Jul 24, 2015
  12. 5/9 tests: use --create-reflog option to git update-refDavid Turner, Jul 24, 2015
  13. 6/9 pseudorefs: create and use pseudoref update and delete functionsDavid Turner, Jul 24, 2015
  14. Junio C HamanoJul 24, 2015
  15. David TurnerJul 24, 2015
  16. Junio C HamanoJul 24, 2015
  17. 7/9 am/rebase: update pseudorefs by writing filesDavid Turner, Jul 24, 2015
  18. 8/9 rebase: use write_pseudorefDavid Turner, Jul 24, 2015
  19. 9/9 refs: forbid pseudoref updates through ref update APIDavid Turner, Jul 24, 2015
  20. Michael HaggertyAug 2, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.