Mercurial > public > mercurial-scm > hg-stable
changeset 52377:a48c688d3e80
rhg: set the expected dirstate permissions (0o666 minus umask)
This is what Python code does, and users in multiuser environments
rely on this behavior.
(we've been maintaining a private patch that fixes this for a long time)
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Wed, 27 Nov 2024 15:14:18 +0000 |
parents | 09a36de53b60 |
children | 1802d9afddf7 |
files | rust/hg-core/src/vfs.rs tests/test-dirstate.t |
diffstat | 2 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-core/src/vfs.rs Tue Nov 26 16:21:00 2024 +0000 +++ b/rust/hg-core/src/vfs.rs Wed Nov 27 15:14:18 2024 +0000 @@ -178,7 +178,9 @@ relative_path: impl AsRef<Path>, contents: &[u8], ) -> Result<(), HgError> { - let mut tmp = tempfile::NamedTempFile::new_in(&self.base) + let mut tmp = tempfile::Builder::new() + .permissions(std::fs::Permissions::from_mode(0o666)) + .tempfile_in(&self.base) .when_writing_file(&self.base)?; tmp.write_all(contents) .and_then(|()| tmp.flush())
--- a/tests/test-dirstate.t Tue Nov 26 16:21:00 2024 +0000 +++ b/tests/test-dirstate.t Wed Nov 27 15:14:18 2024 +0000 @@ -64,6 +64,13 @@ $ hg debugstate n 644 2 2031-01-01 12:00:00 a +Check that .hg/dirstate permissions are correct +(there was a bug where rust atomic replace would set permissions 0600, +which is not what we want) + + $ f --mode .hg/dirstate + .hg/dirstate: mode=644 + Test modulo storage/comparison of absurd dates: #if no-aix