From: Mark Jamsek Subject: Re: introducing gotadmin dump To: Omar Polo Cc: gameoftrees@openbsd.org Date: Fri, 07 Jul 2023 13:13:51 +1000 Omar Polo wrote: > here's a first attempt at teaching gotadmin to generate bundles. Git > bundles are packfiles with a text header to allow git to clone or pull > from. They're useful as a mean to beckup or offline transfer (part > of) the history. > > The plan would be to extend it to generate a plain-text version of the > history (a fast-export stream) too, and add an symmetric command > `load' to, well, load the bundle or fast-import stream in the > repository. > > (that's also why i'm adding a new file dump.c, it will grow functions > to generate a fast-export stream.) > > as noted in the other thread, I'm not sure how to handle the progress, > but didn't want to stress this yet, so i'm just reusing the pack > progress callback. I'll have to revisit it soon(tm) to handle the > fast-export stream format, and didn't want to add a wrapper callback > just for the sake of having a different name. > I don't have a lot of time right now but wanted to sneak a peek at the interface--I like this! A tiny suggestion in the help text is all I have to say at the moment but I will revisit to review and test the code this evening. > ----------------------------------------------- > commit e528344ca7439b5a2401f3c132c91eb6046e6784 (fe) > from: Omar Polo > date: Thu Jul 6 14:27:22 2023 UTC > > add an initial implementation of gotadmin dump > > gotadmin dump is used to export (part of) the history of the > repository; at the moment it only generates git bundles (which are > pack files with a header) but support to generate a fast-import > stream is planned. > > diff 27555e8e6053ab0cc846d201757b588d5a79293f e528344ca7439b5a2401f3c132c91eb6046e6784 > commit - 27555e8e6053ab0cc846d201757b588d5a79293f > commit + e528344ca7439b5a2401f3c132c91eb6046e6784 > blob - 6e194139586ae1731a9aef3771d60596d3d0c756 > blob + 80e118616d09947850bdc2b12829cac8eb2c8b3f > --- gotadmin/Makefile > +++ gotadmin/Makefile > @@ -11,7 +11,8 @@ SRCS= gotadmin.c \ > worktree_open.c hash.c bloom.c murmurhash2.c ratelimit.c \ > sigs.c buf.c date.c object_open_privsep.c \ > read_gitconfig_privsep.c read_gotconfig_privsep.c \ > - pack_create_privsep.c pollfd.c reference_parse.c object_qid.c > + pack_create_privsep.c pollfd.c reference_parse.c object_qid.c \ > + dump.c > MAN = ${PROG}.1 > > CPPFLAGS = -I${.CURDIR}/../include -I${.CURDIR}/../lib > blob - 8be42abe6d6ca03b938b1aebc0e2200cf5ffbf9f > blob + 82bdcfb3e951cfff17a4fcf32279e0ce6ca40880 > --- gotadmin/gotadmin.1 > +++ gotadmin/gotadmin.1 > @@ -337,7 +337,55 @@ work tree, use the repository path associated with thi > .Xr got 1 > work tree, use the repository path associated with this work tree. > .El > +.It Xo > +.Cm dump > +.Op Fl q > +.Op Fl r Ar repository-path > +.Op Fl x Ar reference > +.Op Ar reference ... > +.Xc > +Dump the contents of the repository to standard output. > +.Pp > +If one or more > +.Ar reference > +argumenst is specified, only add objects which are reachable via the specified s/argumenst/arguments > +references. > +Each > +.Ar reference > +argument may either specify a specific reference or a reference namespace, I think the 'specific' adjective is a bit of a tautology with the 'specify' verb so would remove it: argument may either specify a reference or a reference namespace, > +in which case all references within this namespace will be used. > +.Pp > +The options for > +.Nm > +.Cm dump > +are as follows: > +.Bl -tag -width Ds > +.It Fl q > +Suppress progress reporting output. > +.It Fl r Ar repository-path > +Use the repository at the specified path. > +If not specified, assume the repository is located at or above the current > +working directory. > +If this directory is a > +.Xr got 1 > +work tree, use the repository path associated with this work tree. > +.It Fl x Ar reference > +Exclude objects reachable via the specified > +.Ar reference > +from the dump file. > +The > +.Ar reference > +argument may either specify a specific reference or a reference namespace, as above: s/specific ref/ref > +in which case all references within this namespace will be excluded. > +The > +.Fl x > +option may be specified multiple times to build a list of references to exclude. > +.Pp > +Exclusion takes precedence over inclusion. > +If a reference appears in both the included and excluded lists, it will > +be excluded. > .El > +.El > .Sh EXIT STATUS > .Ex -std gotadmin > .Sh SEE ALSO -- Mark Jamsek GPG: F2FF 13DE 6A06 C471 CA80 E6E2 2930 DC66 86EE CF68