GROK-MANIFEST(1)

πŸ“¦
version 2.0.12 Β· 2 versions
  • 2.0.12 Β· debian trixie, epel 9, fedora 43, fedora 44, ubuntu noble, ubuntu questing, ubuntu resolute (latest)
  • 2.0.12 Β· ubuntu stonking
, in debian trixie, epel 9, fedora 43, fedora 44, ubuntu noble, ubuntu questing, ubuntu resolute

πŸ’– GROK-MANIFEST πŸ’–

okay bestie, welcome to the grok-manifest page β€” it's the little script that makes manifests for use with grokmirror, and it's genuinely iconic. no cap. this is GROK-MANIFEST(1), and yes i'm gonna make you read all of it because every flag matters. ✨


🌸 SYNOPSIS 🌸

grok-manifest [opts] -m manifest.js[.gz] -t /path [/path/to/bare.git]

πŸ¦‹ DESCRIPTION πŸ¦‹

so the whole vibe is this: you call grok-manifest from a git post-update or post-receive hook, and it creates the latest repository manifest. that manifest file gets downloaded by mirroring systems β€” but only if the manifest is newer than the one they already have, okay? β€” and then it's used to only clone/pull the repositories that have actually changed since the last time grok-pull ran.

like. it's giving efficiency. it's giving "don't re-clone the whole world every time." πŸ’…


✨ OPTIONS ✨

  • --version β€” shows the program's version number and then dips out. bye. πŸ‘‹
  • -h, --help β€” shows this help message and exits. classic.
  • --cfgfile=CFGFILE β€” the path to your grokmirror.conf, which needs to contain a [manifest] section.
  • -m MANIFILE, --manifest=MANIFILE β€” where the manifest.js or manifest.js.gz lives. main character location.
  • -t TOPLEVEL, --toplevel=TOPLEVEL β€” the top dir where all your repositories reside.
  • -l LOGFILE, --logfile=LOGFILE β€” when you specify this, debug logs get put here.
  • -c, --check-export-ok β€” honors the git-daemon-export-ok magic file and does not export repositories that aren't marked as such. respectful. 🫢
  • -n, --use-now β€” uses the current timestamp instead of parsing commits.
  • -p, --purge β€” purges deleted git repositories from the manifest. clean sweep bestie 🧹
  • -x, --remove β€” removes the repositories passed as arguments from the manifest file.
  • -y, --pretty β€” pretty-prints the generated manifest (sorts repos and adds indentation). > careful though: this is much slower, so it should be used with caution on large collections. it's giving gorgeous but expensive πŸ’€
  • -w, --wait-for-manifest β€” when running with arguments, waits if the manifest isn't there yet. lowkey useful when multiple writers are writing to the manifest file via NFS.
  • -i IGNORE, --ignore-paths=IGNORE β€” when finding git dirs, ignores these paths. can be used multiple times, and it accepts shell-style globbing. 🌈
  • -o, --fetch-objstore β€” fetches updates into the objstore repo (if used).
  • -v, --verbose β€” be verbose and tell us what you're doing. we love a narrator. πŸŽ€

some of these options can be set in a config file that you pass via the --cfgfile option β€” check the example grokmirror.conf file for the documentation. and heads up: values passed via cmdline flags will override the corresponding config file values. cmdline stays winning, periodt. πŸ‘‘


πŸ’œ EXAMPLES πŸ’œ

these examples assume your repositories live in /var/lib/gitolite3/repositories. okay? okay.

initial manifest generation:

/usr/bin/grok-manifest -m /var/www/html/manifest.js.gz \
    -t /var/lib/gitolite3/repositories

inside the git hook:

/usr/bin/grok-manifest -m /var/www/html/manifest.js.gz \
    -t /var/lib/gitolite3/repositories -n `pwd`

to purge deleted repositories from the manifest, use the -p flag when running from cron:

/usr/bin/grok-manifest -m /var/www/html/manifest.js.gz \
    -t /var/lib/gitolite3/repositories -p

you can also add it to the gitolite's D command using the -x flag:

/usr/bin/grok-manifest -m /var/www/html/manifest.js.gz \
    -t /var/lib/gitolite3/repositories \
    -x $repo.git

to troubleshoot potential problems, you can pass the -l parameter to grok-manifest β€” just make sure the user executing the hook command (user git or gitolite, for example) is able to write to that location:

/usr/bin/grok-manifest -m /var/www/html/manifest.js.gz \
    -t /var/lib/gitolite3/repositories \
    -l /var/log/grokmirror/grok-manifest.log -n `pwd`

πŸ‘‘ SEE ALSO πŸ‘‘


🫢 SUPPORT 🫢

email tools@linux.kernel.org. they're nice, promise.


🌟 AUTHOR 🌟

mricon@kernel.org

License: GPLv3+


The Linux Foundation and contributors


and that's the whole page bestie!! version 2.0.0, dated 2020-08-14 β€” literally a classic, fr fr. go make some manifests, you've got this πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈ