summaryrefslogtreecommitdiffstats
path: root/man1/git-commit-graph.1
blob: 812af70cbedd5aad369374eae7c698c8ed85ea22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
'\" t
.\"     Title: git-commit-graph
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 2024-04-10
.\"    Manual: Git Manual
.\"    Source: Git 2.44.0.568.g436d4e5b14
.\"  Language: English
.\"
.TH "GIT\-COMMIT\-GRAPH" "1" "2024\-04\-10" "Git 2\&.44\&.0\&.568\&.g436d4e" "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 [\-\-object\-dir <dir>] [\-\-append]
                        [\-\-split[=<strategy>]] [\-\-reachable | \-\-stdin\-packs | \-\-stdin\-commits]
                        [\-\-changed\-paths] [\-\-[no\-]max\-new\-filters <n>] [\-\-[no\-]progress]
                        <split\-options>
.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\&. If the config option
\fBcore\&.commitGraph\fR
is disabled, then this command will output a warning, then return success without writing a commit\-graph file\&.
.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\&. If this option is given, future commit\-graph writes will automatically assume that this option was intended\&. Use
\fB\-\-no\-changed\-paths\fR
to stop storing this data\&.
.sp
With the
\fB\-\-max\-new\-filters=<n>\fR
option, generate at most
\fBn\fR
new Bloom filters (if
\fB\-\-changed\-paths\fR
is specified)\&. If
\fBn\fR
is
\fB\-1\fR, no limit is enforced\&. Only commits present in the new layer count against this limit\&. To retroactively compute Bloom filters over earlier layers, it is advised to use
\fB\-\-split=replace\fR\&. Overrides the
\fBcommitGraph\&.maxNewFilters\fR
configuration\&.
.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 "CONFIGURATION"
.sp
Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
.PP
commitGraph\&.generationVersion
.RS 4
Specifies the type of generation number version to use when writing or reading the commit\-graph file\&. If version 1 is specified, then the corrected commit dates will not be written or read\&. Defaults to 2\&.
.RE
.PP
commitGraph\&.maxNewFilters
.RS 4
Specifies the default value for the
\fB\-\-max\-new\-filters\fR
option of
\fBgit commit\-graph write\fR
(c\&.f\&.,
\fBgit-commit-graph\fR(1))\&.
.RE
.PP
commitGraph\&.readChangedPaths
.RS 4
If true, then git will use the changed\-path Bloom filters in the commit\-graph file (if it exists, and they are present)\&. Defaults to true\&. See
\fBgit-commit-graph\fR(1)
for more information\&.
.RE
.SH "FILE FORMAT"
.sp
see \fBgitformat-commit-graph\fR(5)\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite