blob: 92da33bd672cda0325c1404ee0c66bf4d5ea05b7 [file] [log] [blame]
'\" t
.\" Title: git-commit-graph
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\" Date: 06/08/2020
.\" Manual: Git Manual
.\" Source: Git 2.27.0.83.g0313f36c6e
.\" Language: English
.\"
.TH "GIT\-COMMIT\-GRAPH" "1" "06/08/2020" "Git 2\&.27\&.0\&.83\&.g0313f36" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-commit-graph \- Write and verify Git commit\-graph files
.SH "SYNOPSIS"
.sp
.nf
\fIgit commit\-graph verify\fR [\-\-object\-dir <dir>] [\-\-shallow] [\-\-[no\-]progress]
\fIgit commit\-graph write\fR <options> [\-\-object\-dir <dir>] [\-\-[no\-]progress]
.fi
.sp
.SH "DESCRIPTION"
.sp
Manage the serialized commit\-graph file\&.
.SH "OPTIONS"
.PP
\-\-object\-dir
.RS 4
Use given directory for the location of packfiles and commit\-graph file\&. This parameter exists to specify the location of an alternate that only has the objects directory, not a full
\fB\&.git\fR
directory\&. The commit\-graph file is expected to be in the
\fB<dir>/info\fR
directory and the packfiles are expected to be in
\fB<dir>/pack\fR\&. If the directory could not be made into an absolute path, or does not match any known object directory,
\fBgit commit\-graph \&.\&.\&.\fR
will exit with non\-zero status\&.
.RE
.PP
\-\-[no\-]progress
.RS 4
Turn progress on/off explicitly\&. If neither is specified, progress is shown if standard error is connected to a terminal\&.
.RE
.SH "COMMANDS"
.PP
\fIwrite\fR
.RS 4
Write a commit\-graph file based on the commits found in packfiles\&.
.sp
With the
\fB\-\-stdin\-packs\fR
option, generate the new commit graph by walking objects only in the specified pack\-indexes\&. (Cannot be combined with
\fB\-\-stdin\-commits\fR
or
\fB\-\-reachable\fR\&.)
.sp
With the
\fB\-\-stdin\-commits\fR
option, generate the new commit graph by walking commits starting at the commits specified in stdin as a list of OIDs in hex, one OID per line\&. OIDs that resolve to non\-commits (either directly, or by peeling tags) are silently ignored\&. OIDs that are malformed, or do not exist generate an error\&. (Cannot be combined with
\fB\-\-stdin\-packs\fR
or
\fB\-\-reachable\fR\&.)
.sp
With the
\fB\-\-reachable\fR
option, generate the new commit graph by walking commits starting at all refs\&. (Cannot be combined with
\fB\-\-stdin\-commits\fR
or
\fB\-\-stdin\-packs\fR\&.)
.sp
With the
\fB\-\-append\fR
option, include all commits that are present in the existing commit\-graph file\&.
.sp
With the
\fB\-\-changed\-paths\fR
option, compute and write information about the paths changed between a commit and its first parent\&. This operation can take a while on large repositories\&. It provides significant performance gains for getting history of a directory or a file with
\fBgit log \-\- <path>\fR\&.
.sp
With the
\fB\-\-split[=<strategy>]\fR
option, write the commit\-graph as a chain of multiple commit\-graph files stored in
\fB<dir>/info/commit\-graphs\fR\&. Commit\-graph layers are merged based on the strategy and other splitting options\&. The new commits not already in the commit\-graph are added in a new "tip" file\&. This file is merged with the existing file if the following merge conditions are met:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If
\fB\-\-split=no\-merge\fR
is specified, a merge is never performed, and the remaining options are ignored\&.
\fB\-\-split=replace\fR
overwrites the existing chain with a new one\&. A bare
\fB\-\-split\fR
defers to the remaining options\&. (Note that merging a chain of commit graphs replaces the existing chain with a length\-1 chain where the first and only incremental holds the entire graph)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If
\fB\-\-size\-multiple=<X>\fR
is not specified, let
\fBX\fR
equal 2\&. If the new tip file would have
\fBN\fR
commits and the previous tip has
\fBM\fR
commits and
\fBX\fR
times
\fBN\fR
is greater than
\fBM\fR, instead merge the two files into a single file\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If
\fB\-\-max\-commits=<M>\fR
is specified with
\fBM\fR
a positive integer, and the new tip file would have more than
\fBM\fR
commits, then instead merge the new tip with the previous tip\&.
.sp
Finally, if
\fB\-\-expire\-time=<datetime>\fR
is not specified, let
\fBdatetime\fR
be the current time\&. After writing the split commit\-graph, delete all unused commit\-graph whose modified times are older than
\fBdatetime\fR\&.
.RE
.RE
.PP
\fIverify\fR
.RS 4
Read the commit\-graph file and verify its contents against the object database\&. Used to check for corrupted data\&.
.sp
With the
\fB\-\-shallow\fR
option, only check the tip commit\-graph file in a chain of split commit\-graphs\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write a commit\-graph file for the packed commits in your local
\fB\&.git\fR
directory\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git commit\-graph write
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write a commit\-graph file, extending the current commit\-graph file using commits in
\fB<pack\-index>\fR\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ echo <pack\-index> | git commit\-graph write \-\-stdin\-packs
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write a commit\-graph file containing all reachable commits\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git show\-ref \-s | git commit\-graph write \-\-stdin\-commits
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write a commit\-graph file containing all commits in the current commit\-graph file along with those reachable from
\fBHEAD\fR\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rev\-parse HEAD | git commit\-graph write \-\-stdin\-commits \-\-append
.fi
.if n \{\
.RE
.\}
.sp
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite