git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 4/4] commit-graph.c: ensure graph layers respect core.sharedRepository

From
Taylor Blau <me@ttaylorr.com>
Date
Apr 27, 2020, 17:21 UTC
Message-ID
<20200427172111.GA58509@syl.local>
In-Reply-To
<f83437f130812d172167d335ba2d13b1545a9f58.1588004647.git.me@ttaylorr.com>
On Mon, Apr 27, 2020 at 10:28:05AM -0600, Taylor Blau wrote:
Show 9 quoted lines
> 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').

It occurs to me that we might want to apply the same treatment to 'commit-graph-chain's, too.

Junio: I'm not sure if you want to apply the below in this series on
top, or if you'd prefer me send it as a separate series. Either way,
here's a patch to do just that:
-- >8 --
Subject: [PATCH] commit-graph.c: make 'commit-graph-chain's read-only

In a previous commit, we made incremental graph layers read-only by using 'git_mkstemp_mode' with permissions '0444'.

There is no reason that 'commit-graph-chain's should be modifiable by the user, since they are generated at a temporary location and then atomically renamed into place.

To ensure that these files are read-only, too, use 'hold_lock_file_for_update_mode' with the same read-only permission bits, and let the umask and 'adjust_shared_perm' take care of the rest.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 commit-graph.c                | 3 ++-
 t/t5324-split-commit-graph.sh | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/commit-graph.c b/commit-graph.c
index d05a55901d..b2dfd7701f 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -1378,7 +1378,8 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
 	if (ctx->split) {
 		char *lock_name = get_chain_filename(ctx->odb);

-		hold_lock_file_for_update(&lk, lock_name, LOCK_DIE_ON_ERROR);
+		hold_lock_file_for_update_mode(&lk, lock_name,
+					       LOCK_DIE_ON_ERROR, 0444);

 		fd = git_mkstemp_mode(ctx->graph_name, 0444);
 		if (fd < 0) {
diff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh
index 61136c737f..a8b12c8110 100755
--- a/t/t5324-split-commit-graph.sh
+++ b/t/t5324-split-commit-graph.sh
@@ -362,6 +362,8 @@ do
 		test_line_count = 1 graph-files &&
 		echo "$modebits" >expect &&
 		test_modebits $graphdir/graph-*.graph >actual &&
+		test_cmp expect actual &&
+		test_modebits $graphdir/commit-graph-chain >actual &&
 		test_cmp expect actual
 	'
 done <<\EOF
--
2.26.0.113.ge9739cdccc
Previous: Taylor BlauNext: Jeff King
Message 28 of 36 in “commit-graph: write non-split graphs as read-only”
  1. 0/3 commit-graph: write non-split graphs as read-onlyTaylor Blau, Apr 20, 2020
  2. 1/3 tempfile.c: introduce 'create_tempfile_mode'Taylor Blau, Apr 20, 2020
  3. Junio C HamanoApr 20, 2020
  4. 2/3 lockfile.c: introduce 'hold_lock_file_for_update_mode'Taylor Blau, Apr 20, 2020
  5. 3/3 commit-graph.c: write non-split graphs as read-onlyTaylor Blau, Apr 20, 2020
  6. Junio C HamanoApr 20, 2020
  7. Taylor BlauApr 20, 2020
  8. Junio C HamanoApr 21, 2020
  9. Jeff KingApr 21, 2020
  10. Junio C HamanoApr 21, 2020
  11. 0/4 commit-graph: write non-split graphs as read-onlyTaylor Blau, Apr 27, 2020
  12. 1/4 tempfile.c: introduce 'create_tempfile_mode'Taylor Blau, Apr 27, 2020
  13. 2/4 lockfile.c: introduce 'hold_lock_file_for_update_mode'Taylor Blau, Apr 27, 2020
  14. 3/4 commit-graph.c: write non-split graphs as read-onlyTaylor Blau, Apr 27, 2020
  15. Junio C HamanoApr 27, 2020
  16. Taylor BlauApr 27, 2020
  17. Junio C HamanoApr 28, 2020
  18. Jeff KingApr 28, 2020
  19. Junio C HamanoApr 28, 2020
  20. Jeff KingApr 28, 2020
  21. Junio C HamanoApr 28, 2020
  22. Jeff KingApr 28, 2020
  23. Taylor BlauApr 28, 2020
  24. Jeff KingApr 28, 2020
  25. Junio C HamanoApr 28, 2020
  26. Derrick StoleeApr 29, 2020
  27. 4/4 commit-graph.c: ensure graph layers respect core.sharedRepositoryTaylor Blau, Apr 27, 2020
  28. Taylor BlauApr 27, 2020
  29. Jeff KingApr 27, 2020
  30. 0/5 commit-graph: write non-split graphs as read-onlyTaylor Blau, Apr 29, 2020
  31. 1/5 tempfile.c: introduce 'create_tempfile_mode'Taylor Blau, Apr 29, 2020
  32. 2/5 lockfile.c: introduce 'hold_lock_file_for_update_mode'Taylor Blau, Apr 29, 2020
  33. 3/5 commit-graph.c: write non-split graphs as read-onlyTaylor Blau, Apr 29, 2020
  34. 4/5 commit-graph.c: ensure graph layers respect core.sharedRepositoryTaylor Blau, Apr 29, 2020
  35. 5/5 commit-graph.c: make 'commit-graph-chain's read-onlyTaylor Blau, Apr 29, 2020
  36. Jeff KingMay 1, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.