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

Re: [PATCH v2 3/4] commit-graph.c: write non-split graphs as read-only

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 28, 2020, 16:50 UTC
Message-ID
<xmqqk11z4ksl.fsf@gitster.c.googlers.com>
In-Reply-To
<20200428033438.GA2369457@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
> If we're just doing this for a single test, perhaps it would be better
> to set the umask in that test (perhaps even in a subshell to avoid
> touching other tests). I guess that's a little awkward here because the
> write and the mode-check happen in separate snippets.

Yes, and we cannot afford to place the writing side under POSIXPERM prerequisite.

> Or going in the opposite direction: if we think that covering the rest
> of the test suite with a diversity of umasks isn't worthwhile, we could
> just set "umask" in test-lib.sh. That would solve this problem and any
> future ones.

Seen from the point of view of giving us a stable testing environment, it certainly feels like an easy and simple thing to do. I do not offhand see any downsides in that approach.

On the other hand, we use and rely on test-specified umask only in a few tests (t0001, t1301 and t1304). Perhaps we should discourage tests outside these to rely too heavily on exact perm bits?

For example, I wonder if we should have used
	test -r commit-graph && ! test -w commit-graph 

to ensure the file is read-only to the user who is testing, instead of relying on parsing "ls -l" output, which IIRC has bitten us with xattr and forced us to revise test_modebits helper in 5610e3b0 (Fix testcase failure when extended attributes are in use, 2008-10-19). That would make the test require SANITY instead, though.

Show 9 quoted lines
> I also wondered if it would be simpler to just limit the scope of the
> test, like so:
> ...
> +	# check only user mode bits, as we do not want to rely on
> +	# test environment umask
> +	grep ^-r-- actual
>  '
> ...
> but maybe there's some value in checking the whole thing.
Yeah, I guess we are wondering about the same thing.

Among various approaches on plate, my preference is to use "umask 022" around the place where we prepare the $TRASH_DIRECTORY and do so only when POSIXPERM is there in the test-lib.sh. I do not know if we should do so before or after creating the $TRASH_DIRECTORY; my gut feeling is that in the ideal world, we should be able to

 - create trash directory
 - use the directory to automatically figure out POSIXPERM
 - if POSIXPERM is set, use umask 022 and chmod og=rx the trash
   directory

Automatically figuring out POSIXPERM the above approach shoots for is a much larger change, so I am not in a haste to implement it and it may be OK to only do "umask 022" after we set POSIXPERM for everybody but MINGW at least as the initial cut, but that would mean we would run for quite a long time with the testing user's umask during the setup process, which is unsatisfying.

Previous: Jeff KingNext: Jeff King
Message 19 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.