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

Re: [PATCH v2 2/2] Handle more file writes correctly in shared repos

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 7, 2016, 21:52 UTC
Message-ID
<xmqq1t9t3vn8.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<c03e5a9d367b76d8a249680c752b4c4d935e9b91.1452085713.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
> - git apply, when writing rejected hunks

Today I may try to apply and leave hello.c.rej; tomorrow you may try to apply a different patch and get rejection for the same file. And you would not be able to if my umask is 077.

I do not know "intended to be shared" is a good criteria, unless it is a synomym to "what is under $GIT_DIR". core.sharedRepository is about the shared-ness of $GIT_DIR and never about the working tree, so I consider it is correct that not adjusting the permission is the right thing to do when 'git apply' writes .rej files, though.

> - git fsck, when writing lost&found blobs

So this _is_ conceptually a problem, but writing anything indexed with the object name is an idempotent operation, so this will not matter in practice, I think.

> - git merge-file, when writing merged files (when Git itself calls
>   merge-file, the file in question was already there, with shared
>   permissions).

Again, this is not a problem (i.e. not touching it in this patch is the right thing to do) as this is about files in the working tree.

> - git fast-import, when writing a crash report

I am not sure about this one. Is the crash report designed to get unique filename every time you run? Otherwise, the fixed name inside $GIT_DIR/ is a shared resource, so I suspect it would want to overwrite. "Not overwriting the crash report is safer, because the existence of it is a sign that the earlier crash hasn't been dealt with" is also a valid position to take, but then it shouldn't even overwrite my own crash report from an earlier run.

So I am inclined to say that this should be changed (either consistently overwrite using fopen_harder(), or consistently fail when my earlier crash report is already there). I however do not think that change belongs to this topic.

> - mailinfo() in mailinfo.c, because the output is clearly not intended to
>   be shared between the users of the current repository

This is more because "not intended to be run multiple simultaneously using the same filename" plus "the callers clean up after they are done" (similar to what you wrote for "git am"), I think.

> - git rerere, when writing resolved files, because the files in question
>   were already written with the correct permissions

This again is more because the result goes to the working tree, not $GIT_DIR.

Previous: Johannes SchindelinNext: Johannes Schindelin
Message 30 of 45 in “commit: ensure correct permissions of the commit message”
  1. commit: ensure correct permissions of the commit messageJohannes Schindelin, Dec 19, 2015
  2. Jeff KingDec 20, 2015
  3. Johannes SchindelinDec 20, 2015
  4. Torsten BögershausenDec 20, 2015
  5. Johannes SchindelinDec 30, 2015
  6. Junio C HamanoDec 21, 2015
  7. Jeff KingDec 21, 2015
  8. Junio C HamanoDec 21, 2015
  9. Johannes SchindelinDec 30, 2015
  10. Junio C HamanoDec 30, 2015
  11. Johannes SchindelinJan 1, 2016
  12. Junio C HamanoJan 4, 2016
  13. Johannes SchindelinJan 5, 2016
  14. Junio C HamanoJan 5, 2016
  15. Johannes SchindelinJan 6, 2016
  16. Jeff KingJan 6, 2016
  17. Johannes SchindelinJan 6, 2016
  18. SZEDER GáborJan 15, 2016
  19. Junio C HamanoJan 15, 2016
  20. Johannes SchindelinJan 15, 2016
  21. SZEDER GáborJan 15, 2016
  22. Johannes SchindelinJan 15, 2016
  23. 0/2 Correctly handle transient files in shared repositoriesJohannes Schindelin, Jan 6, 2016
  24. 1/2 commit: allow editing the commit message even in shared reposJohannes Schindelin, Jan 6, 2016
  25. Jeff KingJan 7, 2016
  26. Junio C HamanoJan 7, 2016
  27. 2/2 Handle more file writes correctly in shared reposJohannes Schindelin, Jan 6, 2016
  28. Jeff KingJan 7, 2016
  29. Johannes SchindelinJan 8, 2016
  30. Junio C HamanoJan 7, 2016
  31. Johannes SchindelinJan 8, 2016
  32. Junio C HamanoJan 8, 2016
  33. Johannes SchindelinJan 11, 2016
  34. Junio C HamanoJan 11, 2016
  35. Junio C HamanoJan 11, 2016
  36. 0/2 Correctly handle transient files in shared repositoriesJohannes Schindelin, Jan 11, 2016
  37. 1/2 commit: allow editing the commit message even in shared reposJohannes Schindelin, Jan 11, 2016
  38. 2/2 Handle more file writes correctly in shared reposJohannes Schindelin, Jan 11, 2016
  39. Jeff KingJan 11, 2016
  40. Junio C HamanoJan 11, 2016
  41. Junio C HamanoJan 11, 2016
  42. Jeff KingJan 11, 2016
  43. Junio C HamanoJan 11, 2016
  44. Jeff KingJan 11, 2016
  45. Johannes SchindelinJan 12, 2016

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.