]> git.ipfire.org Git - thirdparty/git.git/commitdiff
commit-graph.c: ensure graph layers respect core.sharedRepository
authorTaylor Blau <me@ttaylorr.com>
Wed, 29 Apr 2020 17:36:42 +0000 (11:36 -0600)
committerJunio C Hamano <gitster@pobox.com>
Wed, 29 Apr 2020 19:35:30 +0000 (12:35 -0700)
Non-layered commit-graphs use 'adjust_shared_perm' to make the
commit-graph file readable (or not) to a combination of the user, group,
and others.

Call 'adjust_shared_perm' for split-graph layers to make sure that these
also respect 'core.sharedRepository'. The 'commit-graph-chain' file
already respects this configuration since it uses
'hold_lock_file_for_update' (which calls 'adjust_shared_perm' eventually
in 'create_tempfile_mode').

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-graph.c
t/t5324-split-commit-graph.sh

index 5b5047a7dd89285ae977c8cf25591c35f4c0b705..d05a55901d886c537d39ca45c994344ffc9bfedf 100644 (file)
@@ -1386,6 +1386,12 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
                        return -1;
                }
 
+               if (adjust_shared_perm(ctx->graph_name)) {
+                       error(_("unable to adjust shared permissions for '%s'"),
+                             ctx->graph_name);
+                       return -1;
+               }
+
                f = hashfd(fd, ctx->graph_name);
        } else {
                hold_lock_file_for_update_mode(&lk, ctx->graph_name,
index 53b2e6b4555de7d7cc27c727e2e7a3d7a4ff3f5b..699c23d0771f5e273fdb320233034c6a353b9998 100755 (executable)
@@ -36,6 +36,10 @@ graph_read_expect() {
        test_cmp expect output
 }
 
+test_expect_success POSIXPERM 'tweak umask for modebit tests' '
+       umask 022
+'
+
 test_expect_success 'create commits and write commit-graph' '
        for i in $(test_seq 3)
        do
@@ -351,4 +355,22 @@ test_expect_success 'split across alternate where alternate is not split' '
        test_cmp commit-graph .git/objects/info/commit-graph
 '
 
+while read mode modebits
+do
+       test_expect_success POSIXPERM "split commit-graph respects core.sharedrepository $mode" '
+               rm -rf $graphdir $infodir/commit-graph &&
+               git reset --hard commits/1 &&
+               test_config core.sharedrepository "$mode" &&
+               git commit-graph write --split --reachable &&
+               ls $graphdir/graph-*.graph >graph-files &&
+               test_line_count = 1 graph-files &&
+               echo "$modebits" >expect &&
+               test_modebits $graphdir/graph-*.graph >actual &&
+               test_cmp expect actual
+       '
+done <<\EOF
+0666 -r--r--r--
+0600 -r--------
+EOF
+
 test_done