change filemode mechanism in gitea.write_when_new

This commit is contained in:
2025-04-17 16:36:17 +02:00
parent cddf70bcdd
commit 9c707e2375

View File

@ -47,8 +47,7 @@ fi
"""
def write_when_new(doit, filename, content, executable=False):
if executable:
executable = 0o100 # file mode u+x
newmode = 0o755 is executable else 0o644
if content is None:
lines = []
else:
@ -61,14 +60,14 @@ def write_when_new(doit, filename, content, executable=False):
filemode = os.stat(filename).st_mode
except FileNotFoundError:
old = None
filemode = 0o644
if old == content and (filemode & executable == executable):
filemode = 0
if old == content and (filemode | newmode == filemode):
return False
if doit:
if lines:
with open(filename, 'w') as fil:
fil.write(content)
os.chmod(filename, filemode + executable)
os.chmod(filename, newmode)
else:
os.remove(filename)
return True