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

[PATCH v5 1/5] refs: introduce pseudoref and per-worktree ref concepts

From
David Turner <dturner@twopensource.com>
Date
Jul 31, 2015, 06:06 UTC
Message-ID
<1438322781-21181-1-git-send-email-dturner@twopensource.com>
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>
---

This version squashes in Junio's glossary and capitalization corrections, and corrects the spelling of pseudoref (thanks to Johan Herland).

---
 Documentation/glossary-content.txt | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index ab18f4b..8c6478b 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -411,6 +411,27 @@ 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_working_tree,worktree>>, rather than
+	global.  This is presently only <<def_HEAD,HEAD>>, but might
+	later include other unusual refs.
+
+[[def_pseudoref]]pseudoref::
+	Pseudorefs are a class of files under `$GIT_DIR` which behave
+	like refs for the purposes of rev-parse, but which are treated
+	specially by git.  Pseudorefs both have names that are all-caps,
+	and always start with a line consisting of a
+	<<def_SHA1,SHA-1>> followed by whitespace.  So, HEAD is not a
+	pseudoref, because it is sometimes a symbolic ref.  They might
+	optionally contain 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 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].
-- 
2.0.4.315.gad8727a-twtrsrc
Next: David Turner
Message 1 of 13 in “refs: introduce pseudoref and per-worktree ref concepts”
  1. 1/5 refs: introduce pseudoref and per-worktree ref conceptsDavid Turner, Jul 31, 2015
  2. 2/5 refs: add ref_type functionDavid Turner, Jul 31, 2015
  3. Duy NguyenAug 3, 2015
  4. David TurnerAug 3, 2015
  5. David TurnerAug 11, 2015
  6. 3/5 pseudorefs: create and use pseudoref update and delete functionsDavid Turner, Jul 31, 2015
  7. Stefan BellerJul 31, 2015
  8. David TurnerAug 11, 2015
  9. Junio C HamanoAug 11, 2015
  10. Junio C HamanoAug 11, 2015
  11. David TurnerAug 11, 2015
  12. 4/5 bisect: use update_refDavid Turner, Jul 31, 2015
  13. 5/5 sequencer: replace write_cherry_pick_head with update_refDavid Turner, Jul 31, 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.