Skip to content

Commit

Permalink
Merge branch 'po/glossary-around-traversal'
Browse files Browse the repository at this point in the history
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.

* po/glossary-around-traversal:
  glossary: add reachability bitmap description
  glossary: add "commit graph" description
  doc: use 'object database' not ODB or abbreviation
  doc: use "commit-graph" hyphenation consistently
  • Loading branch information
ttaylorr committed Nov 8, 2022
2 parents 06e7696 + 8fea12a commit 4b6302c
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 12 deletions.
2 changes: 1 addition & 1 deletion Documentation/config/core.txt
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,7 @@ but risks losing recent work in the event of an unclean system shutdown.
* `loose-object` hardens objects added to the repo in loose-object form.
* `pack` hardens objects added to the repo in packfile form.
* `pack-metadata` hardens packfile bitmaps and indexes.
* `commit-graph` hardens the commit graph file.
* `commit-graph` hardens the commit-graph file.
* `index` hardens the index when it is modified.
* `objects` is an aggregate option that is equivalent to
`loose-object,pack`.
Expand Down
2 changes: 1 addition & 1 deletion Documentation/git-pack-redundant.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ OPTIONS

--alt-odb::
Don't require objects present in packs from alternate object
directories to be present in local packs.
database (odb) directories to be present in local packs.

--verbose::
Outputs some statistics to stderr. Has a small performance penalty.
Expand Down
6 changes: 3 additions & 3 deletions Documentation/gitformat-commit-graph.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ gitformat-commit-graph(5)

NAME
----
gitformat-commit-graph - Git commit graph format
gitformat-commit-graph - Git commit-graph format

SYNOPSIS
--------
Expand All @@ -14,7 +14,7 @@ $GIT_DIR/objects/info/commit-graphs/*
DESCRIPTION
-----------

The Git commit graph stores a list of commit OIDs and some associated
The Git commit-graph stores a list of commit OIDs and some associated
metadata, including:

- The generation number of the commit.
Expand All @@ -34,7 +34,7 @@ corresponding to the array position within the list of commit OIDs. Due
to some special constants we use to track parents, we can store at most
(1 << 30) + (1 << 29) + (1 << 28) - 1 (around 1.8 billion) commits.

== Commit graph files have the following format:
== Commit-graph files have the following format:

In order to allow extensions that add extra data to the graph, we organize
the body into "chunks" and provide a binary lookup table at the beginning
Expand Down
27 changes: 25 additions & 2 deletions Documentation/glossary-content.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
[[def_branch]]branch::
A "branch" is a line of development. The most recent
<<def_commit,commit>> on a branch is referred to as the tip of
that branch. The tip of the branch is referenced by a branch
that branch. The tip of the branch is <<def_ref,referenced>> by a branch
<<def_head,head>>, which moves forward as additional development
is done on the branch. A single Git
<<def_repository,repository>> can track an arbitrary number of
Expand Down Expand Up @@ -75,6 +75,21 @@ state in the Git history, by creating a new commit representing the current
state of the <<def_index,index>> and advancing <<def_HEAD,HEAD>>
to point at the new commit.

[[def_commit_graph_general]]commit graph concept, representations and usage::
A synonym for the <<def_DAG,DAG>> structure formed by the commits
in the object database, <<def_ref,referenced>> by branch tips,
using their <<def_chain,chain>> of linked commits.
This structure is the definitive commit graph. The
graph can be represented in other ways, e.g. the
<<def_commit_graph_file,"commit-graph" file>>.

[[def_commit_graph_file]]commit-graph file::
The "commit-graph" (normally hyphenated) file is a supplemental
representation of the <<def_commit_graph_general,commit graph>>
which accelerates commit graph walks. The "commit-graph" file is
stored either in the .git/objects/info directory or in the info
directory of an alternate object database.

[[def_commit_object]]commit object::
An <<def_object,object>> which contains the information about a
particular <<def_revision,revision>>, such as <<def_parent,parents>>, committer,
Expand Down Expand Up @@ -262,7 +277,7 @@ This commit is referred to as a "merge commit", or sometimes just a
identified by its <<def_object_name,object name>>. The objects usually
live in `$GIT_DIR/objects/`.

[[def_object_identifier]]object identifier::
[[def_object_identifier]]object identifier (oid)::
Synonym for <<def_object_name,object name>>.

[[def_object_name]]object name::
Expand Down Expand Up @@ -493,6 +508,14 @@ exclude;;
<<def_tree_object,trees>> to the trees or <<def_blob_object,blobs>>
that they contain.

[[def_reachability_bitmap]]reachability bitmaps::
Reachability bitmaps store information about the
<<def_reachable,reachability>> of a selected set of commits in
a packfile, or a multi-pack index (MIDX), to speed up object search.
The bitmaps are stored in a ".bitmap" file. A repository may have at
most one bitmap file in use. The bitmap file may belong to either one
pack, or the repository's multi-pack index (if it exists).

[[def_rebase]]rebase::
To reapply a series of changes from a <<def_branch,branch>> to a
different base, and reset the <<def_head,head>> of that branch
Expand Down
8 changes: 4 additions & 4 deletions Documentation/technical/commit-graph.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Git Commit Graph Design Notes
Git Commit-Graph Design Notes
=============================

Git walks the commit graph for many reasons, including:
Expand All @@ -17,7 +17,7 @@ There are two main costs here:

The commit-graph file is a supplemental data structure that accelerates
commit graph walks. If a user downgrades or disables the 'core.commitGraph'
config setting, then the existing ODB is sufficient. The file is stored
config setting, then the existing object database is sufficient. The file is stored
as "commit-graph" either in the .git/objects/info directory or in the info
directory of an alternate.

Expand Down Expand Up @@ -95,7 +95,7 @@ with default order), but is not used when the topological order is
required (such as merge base calculations, "git log --graph").

In practice, we expect some commits to be created recently and not stored
in the commit graph. We can treat these commits as having "infinite"
in the commit-graph. We can treat these commits as having "infinite"
generation number and walk until reaching commits with known generation
number.

Expand Down Expand Up @@ -149,7 +149,7 @@ Design Details
helpful for these clones, anyway. The commit-graph will not be read or
written when shallow commits are present.

Commit Graphs Chains
Commit-Graphs Chains
--------------------

Typically, repos grow with near-constant velocity (commits per day). Over time,
Expand Down
2 changes: 1 addition & 1 deletion Documentation/technical/parallel-checkout.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Rejected Multi-Threaded Solution

The most "straightforward" implementation would be to spread the set of
to-be-updated cache entries across multiple threads. But due to the
thread-unsafe functions in the ODB code, we would have to use locks to
thread-unsafe functions in the object database code, we would have to use locks to
coordinate the parallel operation. An early prototype of this solution
showed that the multi-threaded checkout would bring performance
improvements over the sequential code, but there was still too much lock
Expand Down

0 comments on commit 4b6302c

Please sign in to comment.