diff options
author | Jeff King <peff@peff.net> | 2015-06-23 13:54:11 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-25 03:09:35 +0300 |
commit | 067fbd4105c5aa8260a73cc6961854be0e93fa03 (patch) | |
tree | 302bb72cb8414580c24bd4d896bc4879e31b8a66 /builtin/repack.c | |
parent | 00a09d57eb8a041e6a6b0470c53533719c049bab (diff) |
introduce "preciousObjects" repository extension
If this extension is used in a repository, then no
operations should run which may drop objects from the object
storage. This can be useful if you are sharing that storage
with other repositories whose refs you cannot see.
For instance, if you do:
$ git clone -s parent child
$ git -C parent config extensions.preciousObjects true
$ git -C parent config core.repositoryformatversion 1
you now have additional safety when running git in the
parent repository. Prunes and repacks will bail with an
error, and `git gc` will skip those operations (it will
continue to pack refs and do other non-object operations).
Older versions of git, when run in the repository, will
fail on every operation.
Note that we do not set the preciousObjects extension by
default when doing a "clone -s", as doing so breaks
backwards compatibility. It is a decision the user should
make explicitly.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/repack.c')
-rw-r--r-- | builtin/repack.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/builtin/repack.c b/builtin/repack.c index af7340c7ba..3beda2c65a 100644 --- a/builtin/repack.c +++ b/builtin/repack.c @@ -193,6 +193,9 @@ int cmd_repack(int argc, const char **argv, const char *prefix) argc = parse_options(argc, argv, prefix, builtin_repack_options, git_repack_usage, 0); + if (delete_redundant && repository_format_precious_objects) + die(_("cannot delete packs in a precious-objects repo")); + if (pack_kept_objects < 0) pack_kept_objects = write_bitmaps; |