2 20662ea0 2021-04-10 stsp .\" Copyright (c) 2021 Stefan Sperling
4 20662ea0 2021-04-10 stsp .\" Permission to use, copy, modify, and distribute this software for any
5 20662ea0 2021-04-10 stsp .\" purpose with or without fee is hereby granted, provided that the above
6 20662ea0 2021-04-10 stsp .\" copyright notice and this permission notice appear in all copies.
8 20662ea0 2021-04-10 stsp .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 20662ea0 2021-04-10 stsp .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 20662ea0 2021-04-10 stsp .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 20662ea0 2021-04-10 stsp .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 20662ea0 2021-04-10 stsp .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 20662ea0 2021-04-10 stsp .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 20662ea0 2021-04-10 stsp .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 20662ea0 2021-04-10 stsp .Dd $Mdocdate$
17 20662ea0 2021-04-10 stsp .Dt GOTADMIN 1
20 20662ea0 2021-04-10 stsp .Nm gotadmin
21 20662ea0 2021-04-10 stsp .Nd Game of Trees repository administration
22 20662ea0 2021-04-10 stsp .Sh SYNOPSIS
26 20662ea0 2021-04-10 stsp .Op Ar arg ...
27 20662ea0 2021-04-10 stsp .Sh DESCRIPTION
29 20662ea0 2021-04-10 stsp is the repository maintenance tool for the
31 20662ea0 2021-04-10 stsp version control system.
34 20662ea0 2021-04-10 stsp stores the history of tracked files in a Git repository, as used
35 20662ea0 2021-04-10 stsp by the Git version control system.
37 20662ea0 2021-04-10 stsp provides commands for inspecting and manipulating the on-disk state of
38 20662ea0 2021-04-10 stsp Git repositories.
39 20662ea0 2021-04-10 stsp The repository format is described in
40 20662ea0 2021-04-10 stsp .Xr git-repository 5 .
43 20662ea0 2021-04-10 stsp provides global and command-specific options.
44 20662ea0 2021-04-10 stsp Global options must precede the command name, and are as follows:
45 20662ea0 2021-04-10 stsp .Bl -tag -width tenletters
47 20662ea0 2021-04-10 stsp Display usage information and exit immediately.
48 20662ea0 2021-04-10 stsp .It Fl V , -version
49 20662ea0 2021-04-10 stsp Display program version and exit immediately.
52 20662ea0 2021-04-10 stsp The commands for
54 20662ea0 2021-04-10 stsp are as follows:
55 20662ea0 2021-04-10 stsp .Bl -tag -width checkout
56 6f04a73d 2022-09-20 mark .It Cm init Oo Fl b Ar branch Oc Ar repository-path
57 02a5c5d0 2022-07-04 stsp Create a new empty repository at the specified
58 02a5c5d0 2022-07-04 stsp .Ar repository-path .
61 02a5c5d0 2022-07-04 stsp .Cm gotadmin init ,
63 02a5c5d0 2022-07-04 stsp .Cm got import
64 02a5c5d0 2022-07-04 stsp command must be used to populate the empty repository before
65 02a5c5d0 2022-07-04 stsp .Cm got checkout
66 02a5c5d0 2022-07-04 stsp can be used.
68 6f04a73d 2022-09-20 mark The options for
69 6f04a73d 2022-09-20 mark .Cm gotadmin init
70 6f04a73d 2022-09-20 mark are as follows:
71 6f04a73d 2022-09-20 mark .Bl -tag -width Ds
72 6f04a73d 2022-09-20 mark .It Fl b Ar branch
73 6f04a73d 2022-09-20 mark Make the repository's HEAD reference point to the specified
75 6f04a73d 2022-09-20 mark instead of the default branch
78 5fc4f020 2022-08-30 op .It Cm info Op Fl r Ar repository-path
79 20662ea0 2021-04-10 stsp Display information about a repository.
80 20662ea0 2021-04-10 stsp This includes some configuration settings from
81 20662ea0 2021-04-10 stsp .Xr got.conf 5 ,
82 20662ea0 2021-04-10 stsp and the number of objects stored in the repository, in packed or
83 20662ea0 2021-04-10 stsp loose form, as well as the current on-disk size of these objects.
85 20662ea0 2021-04-10 stsp The options for
86 20662ea0 2021-04-10 stsp .Cm gotadmin info
87 20662ea0 2021-04-10 stsp are as follows:
88 20662ea0 2021-04-10 stsp .Bl -tag -width Ds
89 20662ea0 2021-04-10 stsp .It Fl r Ar repository-path
90 20662ea0 2021-04-10 stsp Use the repository at the specified path.
91 20662ea0 2021-04-10 stsp If not specified, assume the repository is located at or above the current
92 20662ea0 2021-04-10 stsp working directory.
93 7d69d862 2021-11-15 stsp If this directory is a
95 7d69d862 2021-11-15 stsp work tree, use the repository path associated with this work tree.
100 5fc4f020 2022-08-30 op .Op Fl r Ar repository-path
101 5fc4f020 2022-08-30 op .Op Fl x Ar reference
102 5fc4f020 2022-08-30 op .Op Ar reference ...
104 05118f5a 2021-06-22 stsp Generate a new pack file and a corresponding pack file index.
105 05118f5a 2021-06-22 stsp By default, add any loose objects which are reachable via any references
106 05118f5a 2021-06-22 stsp to the generated pack file.
108 05118f5a 2021-06-22 stsp If one or more
109 05118f5a 2021-06-22 stsp .Ar reference
110 05118f5a 2021-06-22 stsp arguments is specified, only add objects which are reachable via the specified
111 05118f5a 2021-06-22 stsp references.
113 05118f5a 2021-06-22 stsp .Ar reference
114 05118f5a 2021-06-22 stsp argument may either specify a specific reference or a reference namespace,
115 05118f5a 2021-06-22 stsp in which case all references within this namespace will be used.
117 05118f5a 2021-06-22 stsp .Cm gotadmin pack
118 05118f5a 2021-06-22 stsp always ignores references in the
119 05118f5a 2021-06-22 stsp .Pa refs/got/
120 05118f5a 2021-06-22 stsp namespace, effectively treating such references as if they did not refer
121 05118f5a 2021-06-22 stsp to any objects.
123 05118f5a 2021-06-22 stsp The options for
124 05118f5a 2021-06-22 stsp .Cm gotadmin pack
125 05118f5a 2021-06-22 stsp are as follows:
126 05118f5a 2021-06-22 stsp .Bl -tag -width Ds
128 05118f5a 2021-06-22 stsp Add objects to the generated pack file even if they are already packed
129 05118f5a 2021-06-22 stsp in a different pack file.
130 05118f5a 2021-06-22 stsp Unless this option is specified, only loose objects will be added.
132 827a167b 2022-08-16 stsp Suppress progress reporting output.
133 05118f5a 2021-06-22 stsp .It Fl r Ar repository-path
134 05118f5a 2021-06-22 stsp Use the repository at the specified path.
135 05118f5a 2021-06-22 stsp If not specified, assume the repository is located at or above the current
136 05118f5a 2021-06-22 stsp working directory.
137 7d69d862 2021-11-15 stsp If this directory is a
139 7d69d862 2021-11-15 stsp work tree, use the repository path associated with this work tree.
140 05118f5a 2021-06-22 stsp .It Fl x Ar reference
141 05118f5a 2021-06-22 stsp Exclude objects reachable via the specified
142 05118f5a 2021-06-22 stsp .Ar reference
143 05118f5a 2021-06-22 stsp from the pack file.
145 05118f5a 2021-06-22 stsp .Ar reference
146 05118f5a 2021-06-22 stsp argument may either specify a specific reference or a reference namespace,
147 05118f5a 2021-06-22 stsp in which case all references within this namespace will be excluded.
150 05118f5a 2021-06-22 stsp option may be specified multiple times to build a list of references to exclude.
152 05118f5a 2021-06-22 stsp Exclusion takes precedence over inclusion.
153 05118f5a 2021-06-22 stsp If a reference appears in both the included and excluded lists, it will
154 05118f5a 2021-06-22 stsp be excluded.
157 05118f5a 2021-06-22 stsp .It Cm indexpack Ar packfile-path
158 4683a10b 2021-11-04 kn .Dl Pq alias: Cm ix
159 05118f5a 2021-06-22 stsp Create a pack index for the pack file at
160 05118f5a 2021-06-22 stsp .Ar packfile-path .
162 05118f5a 2021-06-22 stsp A pack index is required for using the corresponding pack file with
163 05118f5a 2021-06-22 stsp .Xr got 1 .
164 05118f5a 2021-06-22 stsp Usually, a pack index will be created by commands such as
165 05118f5a 2021-06-22 stsp .Cm gotadmin pack
167 05118f5a 2021-06-22 stsp .Cm got fetch
168 05118f5a 2021-06-22 stsp as part of regular operation.
170 05118f5a 2021-06-22 stsp .Cm gotadmin indexpack
171 05118f5a 2021-06-22 stsp command may be used to recover from a corrupt or missing index.
172 05118f5a 2021-06-22 stsp A given pack file will always yield the same bit-identical index.
174 05118f5a 2021-06-22 stsp The provided
175 05118f5a 2021-06-22 stsp .Ar packfile-path
176 05118f5a 2021-06-22 stsp must be located within the
177 05118f5a 2021-06-22 stsp .Pa objects/pack/
178 05118f5a 2021-06-22 stsp directory of the repository and should end in
179 05118f5a 2021-06-22 stsp .Pa .pack .
180 05118f5a 2021-06-22 stsp The filename of the corresponding pack index is equivalent, except
181 05118f5a 2021-06-22 stsp that it ends in
187 5fc4f020 2022-08-30 op .Ar packfile-path
189 4683a10b 2021-11-04 kn .Dl Pq alias: Cm ls
190 05118f5a 2021-06-22 stsp List the contents of the pack file at
191 05118f5a 2021-06-22 stsp .Ar packfile-path .
193 05118f5a 2021-06-22 stsp Each object contained in the pack file will be displayed on a single line.
194 05118f5a 2021-06-22 stsp The information shown includes the object ID, object type, object offset,
195 05118f5a 2021-06-22 stsp and object size.
197 e38d4cde 2022-03-21 naddy If a packed object is deltified against another object, the delta base
198 05118f5a 2021-06-22 stsp will be shown as well.
199 05118f5a 2021-06-22 stsp For offset deltas, the delta base is identified via an offset into the
201 05118f5a 2021-06-22 stsp For reference deltas, the delta base is identified via an object ID.
203 05118f5a 2021-06-22 stsp The provided
204 05118f5a 2021-06-22 stsp .Ar packfile-path
205 05118f5a 2021-06-22 stsp must be located within the
206 05118f5a 2021-06-22 stsp .Pa objects/pack/
207 05118f5a 2021-06-22 stsp directory of the repository and should end in
208 05118f5a 2021-06-22 stsp .Pa .pack .
209 8e26059c 2022-03-10 stsp The corresponding pack index must exist and can be created with
210 8e26059c 2022-03-10 stsp .Cm gotadmin indexpack
211 8e26059c 2022-03-10 stsp if it is missing.
213 05118f5a 2021-06-22 stsp The options for
214 05118f5a 2021-06-22 stsp .Cm gotadmin listpack
215 05118f5a 2021-06-22 stsp are as follows:
216 05118f5a 2021-06-22 stsp .Bl -tag -width Ds
218 05118f5a 2021-06-22 stsp Show object sizes in human-readable form.
220 0c079dbc 2021-10-06 kn Display statistics about the pack file after listing objects.
221 05118f5a 2021-06-22 stsp This includes the total number of objects stored in the pack file
222 05118f5a 2021-06-22 stsp and a break-down of the number of objects per object type.
228 5fc4f020 2022-08-30 op .Op Fl r Ar repository-path
230 4683a10b 2021-11-04 kn .Dl Pq alias: Cm cl
231 b3d68e7f 2021-07-03 stsp Purge unreferenced loose objects from the repository and display
232 b3d68e7f 2021-07-03 stsp the amount of disk space which has been freed as a result.
234 b3d68e7f 2021-07-03 stsp Unreferenced objects are present in the repository but cannot be
235 b3d68e7f 2021-07-03 stsp reached via any reference in the entire
239 b3d68e7f 2021-07-03 stsp Loose objects are stored as individual files beneath the repository's
240 b3d68e7f 2021-07-03 stsp .Pa objects/
242 b3d68e7f 2021-07-03 stsp spread across 256 sub-directories named after the 256 possible
243 b3d68e7f 2021-07-03 stsp hexadecimal values of the first byte of an object identifier.
245 b3d68e7f 2021-07-03 stsp Packed objects stored in pack files under
246 0c079dbc 2021-10-06 kn .Pa objects/pack/
247 b3d68e7f 2021-07-03 stsp will not be purged.
248 b3d68e7f 2021-07-03 stsp However, if redundant copies of packed objects exist in loose form,
249 b3d68e7f 2021-07-03 stsp such redundant copies will be purged.
251 b3d68e7f 2021-07-03 stsp Objects will usually become unreferenced as a result of deleting
252 b3d68e7f 2021-07-03 stsp branches or tags with
253 b3d68e7f 2021-07-03 stsp .Cm got branch -d
255 b3d68e7f 2021-07-03 stsp .Cm got tag -d .
256 b3d68e7f 2021-07-03 stsp Deleting arbitrary references with
257 0c079dbc 2021-10-06 kn .Cm got ref -d
258 b3d68e7f 2021-07-03 stsp may also leave unreferenced objects behind.
260 b3d68e7f 2021-07-03 stsp In order to determine the set of objects which are referenced, search
261 b3d68e7f 2021-07-03 stsp all references for commit objects and tag objects, and traverse the
262 b3d68e7f 2021-07-03 stsp corresponding tree object hierarchies.
263 b3d68e7f 2021-07-03 stsp Any loose object IDs not encountered during this search are unreferenced
264 b3d68e7f 2021-07-03 stsp and thus subject to removal.
265 b3d68e7f 2021-07-03 stsp Display the number of commits which have been searched to indicate progress.
267 b3d68e7f 2021-07-03 stsp References in the
268 b3d68e7f 2021-07-03 stsp .Pa refs/got
269 b3d68e7f 2021-07-03 stsp namespace may prevent objects from being purged.
270 b3d68e7f 2021-07-03 stsp This includes references in the
271 b3d68e7f 2021-07-03 stsp .Pa refs/got/worktree
272 b3d68e7f 2021-07-03 stsp namespace created by
273 b3d68e7f 2021-07-03 stsp .Cm got checkout
275 b3d68e7f 2021-07-03 stsp .Cm got update ,
276 b3d68e7f 2021-07-03 stsp as well as references in the
277 b3d68e7f 2021-07-03 stsp .Pa refs/got/backup
278 b3d68e7f 2021-07-03 stsp namespace created by
279 b3d68e7f 2021-07-03 stsp .Cm got rebase
281 b3d68e7f 2021-07-03 stsp .Cm got histedit .
282 b3d68e7f 2021-07-03 stsp .Cm gotadmin cleanup
283 b3d68e7f 2021-07-03 stsp will only purge corresponding objects once such references have been
284 b3d68e7f 2021-07-03 stsp deleted with
285 b3d68e7f 2021-07-03 stsp .Cm got ref -d .
287 1124fe40 2021-07-07 stsp Some Git repositories contain pack index files which lack a corresponding
288 1124fe40 2021-07-07 stsp pack file, which is an inconsistent repository state.
289 1124fe40 2021-07-07 stsp In such cases,
290 1124fe40 2021-07-07 stsp .Cm gotadmin cleanup -p -n
291 1124fe40 2021-07-07 stsp will display a list of affected pack index files.
292 e38d4cde 2022-03-21 naddy Whenever possible, the missing pack files should be restored.
293 e38d4cde 2022-03-21 naddy If restoring missing pack files is not possible, then affected pack index
294 1124fe40 2021-07-07 stsp files can be removed with
295 1124fe40 2021-07-07 stsp .Cm gotadmin cleanup -p .
298 9188bd78 2021-07-03 stsp .Dq preciousObjects
299 9188bd78 2021-07-03 stsp Git extension is intended to prevent the removal of objects from a repository.
300 0c079dbc 2021-10-06 kn .Cm gotadmin cleanup
301 9188bd78 2021-07-03 stsp will refuse to operate on repositories where this extension is active.
303 b3d68e7f 2021-07-03 stsp The options for
304 d4445ca5 2021-07-03 stsp .Cm gotadmin cleanup
305 b3d68e7f 2021-07-03 stsp are as follows:
306 b3d68e7f 2021-07-03 stsp .Bl -tag -width Ds
308 ef8ec606 2021-07-27 stsp Delete all loose objects.
309 ef8ec606 2021-07-27 stsp By default, objects which are newer than an implementation-defined
310 ef8ec606 2021-07-27 stsp modification timestamp are kept on disk to prevent race conditions
311 ef8ec606 2021-07-27 stsp with other commands that add new objects to the repository while
312 ef8ec606 2021-07-27 stsp .Cm gotadmin cleanup
313 ef8ec606 2021-07-27 stsp is running.
315 b3d68e7f 2021-07-03 stsp Display the usual progress output and summary information but do not actually
316 1124fe40 2021-07-07 stsp remove any files from disk.
318 827a167b 2022-08-16 stsp Instead of purging unreferenced loose objects, remove any pack index files
319 827a167b 2022-08-16 stsp which do not have a corresponding pack file.
321 827a167b 2022-08-16 stsp Suppress progress reporting and disk space summary output.
322 b3d68e7f 2021-07-03 stsp .It Fl r Ar repository-path
323 b3d68e7f 2021-07-03 stsp Use the repository at the specified path.
324 b3d68e7f 2021-07-03 stsp If not specified, assume the repository is located at or above the current
325 b3d68e7f 2021-07-03 stsp working directory.
326 7d69d862 2021-11-15 stsp If this directory is a
328 7d69d862 2021-11-15 stsp work tree, use the repository path associated with this work tree.
331 20662ea0 2021-04-10 stsp .Sh EXIT STATUS
332 20662ea0 2021-04-10 stsp .Ex -std gotadmin
333 20662ea0 2021-04-10 stsp .Sh SEE ALSO
334 20662ea0 2021-04-10 stsp .Xr got 1 ,
335 20662ea0 2021-04-10 stsp .Xr tog 1 ,
336 20662ea0 2021-04-10 stsp .Xr git-repository 5 ,
337 20662ea0 2021-04-10 stsp .Xr got.conf 5
338 20662ea0 2021-04-10 stsp .Sh AUTHORS
339 8ca658b9 2022-07-05 stsp .An Christian Weisgerber Aq Mt naddy@openbsd.org
340 8ca658b9 2022-07-05 stsp .An Josh Rickmar Aq Mt jrick@zettaport.com
341 8ca658b9 2022-07-05 stsp .An Klemens Nanni Aq Mt kn@openbsd.org
342 05118f5a 2021-06-22 stsp .An Ori Bernstein Aq Mt ori@openbsd.org
343 8ca658b9 2022-07-05 stsp .An Stefan Sperling Aq Mt stsp@openbsd.org
344 8ca658b9 2022-07-05 stsp .An Tracey Emery Aq Mt tracey@traceyemery.net
345 7e36bc2b 2021-06-25 stsp .Sh CAVEATS
347 7e36bc2b 2021-06-25 stsp is a work-in-progress and some features remain to be implemented.
349 7e36bc2b 2021-06-25 stsp At present, the user has to fall back on
351 7e36bc2b 2021-06-25 stsp to perform some tasks.
352 7e36bc2b 2021-06-25 stsp In particular:
353 7e36bc2b 2021-06-25 stsp .Bl -bullet
355 b3d68e7f 2021-07-03 stsp Removing redundant or unreferenced packed objects requires
356 b3d68e7f 2021-07-03 stsp .Xr git-gc 1
357 b3d68e7f 2021-07-03 stsp and perhaps
358 b3d68e7f 2021-07-03 stsp .Xr git-repack 1 .
360 7e36bc2b 2021-06-25 stsp Exporting data from repositories requires
361 7e36bc2b 2021-06-25 stsp .Xr git-fast-export 1 .
363 7e36bc2b 2021-06-25 stsp Importing data into repositories requires
364 7e36bc2b 2021-06-25 stsp .Xr git-fast-import 1 .
367 aaf7c342 2021-07-03 stsp Disk space savings reported by
368 aaf7c342 2021-07-03 stsp .Cm gotadmin cleanup
369 aaf7c342 2021-07-03 stsp will be misleading if the repository contains object files that were
370 aaf7c342 2021-07-03 stsp hard-linked from another repository.
371 aaf7c342 2021-07-03 stsp Such hard-links will be created by certain
376 aaf7c342 2021-07-03 stsp will never create hard-linked object files.