textfile() must also respect repo-umask