On Tue, Apr 23, 2019 at 10:30:56AM -0700, Elijah Newren wrote:

> diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c
> index f3353564f9..cfbd5c36c7 100644
> --- a/builtin/pack-refs.c
> +++ b/builtin/pack-refs.c
> @@ -1,4 +1,5 @@
>  #include "builtin.h"
> +#include "config.h"
>  #include "parse-options.h"
>  #include "refs.h"
>  #include "repository.h"
> @@ -16,6 +17,7 @@ int cmd_pack_refs(int argc, const char **argv, const char 
> *prefix)
>               OPT_BIT(0, "prune", &flags, N_("prune loose refs (default)"), 
> PACK_REFS_PRUNE),
>               OPT_END(),
>       };
> +     git_config(git_default_config, NULL);
>       if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0))
>               usage_with_options(pack_refs_usage, opts);
>       return refs_pack_refs(get_main_ref_store(the_repository), flags);

I coincidentally just wrote the same patch (working off a branch of
v2.21, so I didn't yet have your fix here). Just for the record, this
fixes other bugs, too!

Mine was:

diff --git a/t/t3210-pack-refs.sh b/t/t3210-pack-refs.sh
index 9ea5fa4fd2..07d09ac67a 100755
--- a/t/t3210-pack-refs.sh
+++ b/t/t3210-pack-refs.sh
@@ -253,4 +253,13 @@ test_expect_success SYMLINKS 'pack symlinked packed-refs' '
        test "$(readlink .git/packed-refs)" = "my-deviant-packed-refs"
 '
 
+test_expect_success 'pack-refs respects core.useReplaceRefs' '
+       # this is broken because the object refers to itself
+       commit=$(git rev-parse HEAD) &&
+       test_when_finished "git update-ref -d refs/replace/$commit" &&
+       git update-ref refs/replace/$commit $commit &&
+       test_must_fail git pack-refs --all &&
+       git -c core.useReplaceRefs=false pack-refs --all
+'
+
 test_done

It's probably not worth adding the test independently, but I thought I'd
throw it out here for the benefit of the list archive.

-Peff

Reply via email to