blob: 7b15f80f824c08ecdd08daa350c49a1b445fd707 [file] [log] [blame]
v2.0.0 (2020-08-14)
-------------------
- Major rewrite to improve shared object storage. See UPGRADING.rst for
upgrade strategy. Below are major highlights.
- Drop support for python < 3.6
- Introduce "object storage" repositories that benefit from git-pack
delta islands
- Make grok-pull operate in daemon mode (with -o) (see contrib for
systemd unit files)
- Provide a socket listener for pubsub push updates (see contrib for
Google pubsubv1.py)
- Merge fsck.conf and repos.conf into a single config file
- Grok-manifest will now record where HEAD is pointing so replicas can
properly track these changes.
v1.2.2 (2019-10-23)
-------------------
- Small bugfixes
- Generate commit-graph file if the version of git is new
enough to support it. This is done during grok-fsck any time we
decide that the repository needs to be repacked. You can force
this off by setting commitgraph=never in config.
v1.2.1 (2019-03-11)
-------------------
- Minor feature improvement changing how precious=yes works.
Grokmirror will now turn preciousObjects off for the duration
of the repack. We still protect shared repositories against
inadvertent object pruning by outside processes, but this
allows us to clean up loose objects and obsolete packs.
To have the 1.2.0 behaviour back, set precious=always, but it
is only really useful in very rare cases.
v1.2.0 (2019-02-14)
-------------------
- Make sure to set gc.auto=0 on repositories to avoid pruning repos
that are acting as alternates to others. We run our own prune
during fsck, so there is no need to auto-gc, ever (unless you
didn't set up grok-fsck, in which case you're not doing it right).
- Rework the repack code to be more clever -- instead of repacking
based purely on dates, we now track the number of loose objects
and the number of generated packs. Many of the settings are
hardcoded for the moment while testing, but will probably end up
settable via global and per-repository config settings.
- The following fsck.conf settings have no further effect:
- repack_flags (replaced with extra_repack_flags)
- full_repack_flags (replaced with extra_repack_flags_full)
- full_repack_every (we now figure it out ourselves)
- Move git command invocation routines into a central function to
reduce the amount of code duplication. You can also set the path
to the git binary using the GITBIN env variable or by simply
adding it to your path.
- Add "reclone_on_errors" setting in fsck.conf. If fsck/repack/prune
comes across a matching error, it will mark the repository for
recloning and it will be cloned anew from the master the next time
grok-pull runs. This is useful for auto-correcting corruption on the
mirrors. You can also manually request a reclone by creating a
"grokmirror.reclone" file in a repository.
- Set extensions.preciousObjects for repositories used with git
alternates if precious=yes is set in fsck.conf. This helps further
protect shared repos from erroneous pruning (e.g. done manually by
an administrator).
v1.1.1 (2018-07-25)
-------------------
- Quickfix a bug that was causing repositories to never be repacked
due to miscalculated fingerprints.
v1.1.0 (2018-04-24)
-------------------
- Make Python3 compatible (thanks to QuLogic for most of the work)
- Rework grok-fsck to improve functionality:
- run repack and prune before fsck, for optimal safety
- add --connectivity flag to run fsck with --connectivity-only
- add --repack-all-quick to trigger a quick repack of all repos
- add --repack-all-full to trigger a full repack of all repositories
using the defined full_repack_flags from fsck.conf
- always run fsck with --no-dangling, because mirror admins are not
responsible for cleaning those up anyway
- no longer locking repos when running repack/prune/fsck, because
these operations are safe as long as they are done by git itself
- fix grok-pull so it no longer purges repos that are providing
alternates to others
- fix grok-fsck so it's more paranoid when pruning repos providing
alternates to others (checks all repos on disk, not just manifest)
- in verbose mode, most commands will draw progress bars (handy with
very large connections of repositories)