grok-manifest - Man Page

Create manifest for use with grokmirror

Synopsis

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

Description

Call grok-manifest from a git post-update or post-receive hook to create the latest repository manifest. This manifest file is downloaded by mirroring systems (if manifest is newer than what they already have) and used to only clone/pull the repositories that have changed since the grok-pull's last run.

Options

--version

show program's version number and exit

-h,  --help

show this help message and exit

--cfgfile=CFGFILE

Path to grokmirror.conf containing a [manifest] section

-m MANIFILE--manifest=MANIFILE

Location of manifest.js or manifest.js.gz

-t TOPLEVEL--toplevel=TOPLEVEL

Top dir where all repositories reside

-l LOGFILE--logfile=LOGFILE

When specified, will put debug logs in this location

-c,  --check-export-ok

Honor the git-daemon-export-ok magic file and do not export repositories not marked as such

-n,  --use-now

Use current timestamp instead of parsing commits

-p,  --purge

Purge deleted git repositories from manifest

-x,  --remove

Remove repositories passed as arguments from the manifest file

-y,  --pretty

Pretty-print the generated manifest (sort repos and add indentation). This is much slower, so should be used with caution on large collections.

-w,  --wait-for-manifest

When running with arguments, wait if manifest is not there (can be useful when multiple writers are writing to the manifest file via NFS)

-i IGNORE--ignore-paths=IGNORE

When finding git dirs, ignore these paths (can be used multiple times, accepts shell-style globbing)

-o,  --fetch-objstore

Fetch updates into objstore repo (if used)

-v,  --verbose

Be verbose and tell us what you are doing

You can set some of these options in a config file that you can pass via --cfgfile option. See example grokmirror.conf file for documentation. Values passed via cmdline flags will override the corresponding config file values.

Examples

The examples assume that the repositories are located in /var/lib/gitolite3/repositories.

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 -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.

Author

mricon@kernel.org

License: GPLv3+

Referenced By

grok-bundle(1), grok-dumb-pull(1), grok-fsck(1), grok-pull(1).

2020-08-14 2.0.0