Hi again Philip, Sorry, I was a bit too hasty in saying this was machine dependent. Your test case does respect the umask on all of the machines I am trying it on, but on real life repositories the bug occurs as I described (which is how I was reproducing it).
Here is a sequence of commands that should reproduce the bug for you: [Cathy@localhost scratch]$ svn co http://svn.apache.org/repos/asf/subversion/trunk subversion > /dev/null [Cathy@localhost scratch]$ cd subversion/ [Cathy@localhost subversion]$ echo blah >> INSTALL [Cathy@localhost subversion]$ svn diff > patch [Cathy@localhost subversion]$ svn revert INSTALL Reverted 'INSTALL' [Cathy@localhost subversion]$ ls -l INSTALL -rw-rw-r--. 1 Cathy Cathy 63057 Nov 22 03:29 INSTALL [Cathy@localhost subversion]$ umask 070 [Cathy@localhost subversion]$ svn patch patch U INSTALL [Cathy@localhost subversion]$ ls -ls INSTALL 68 -rw-------. 1 Cathy Cathy 63062 Nov 22 03:29 INSTALL This is just a guess to be verified later: it may be that the bug only occurs if a file has an EOL property specified. Thanks, Cathy On Fri, Nov 22, 2013 at 3:12 AM, Cathy Fitzpatrick <ca...@cathyjf.com> wrote: > Hi Philip: > > I get the behaviour I described on every version of subversion I've > ever tried that has `svn patch`, on various different machines > completely unrelated to each other. > > The patch I submitted was against trunk, which I confirmed to have the > bug in my local testing (obviously; I wouldn't submit a patch to fix > something that wasn't happening). I also just reproduced the bug on a > completely unrelated installation of 1.8.0 on a different machine. > > As for why it's different on different machines -- it probably depends > on some details in APR. As I mentioned several times, the way the `svn > patch` code works is that it creates a file under /tmp and then copies > it to the final destination. The reason that gives 600 permissions on > the machines I've tried is that `apr_file_mktemp` creates files under > /tmp with 600 permissions. > > There are several possible explanations of why it might be different > on different machines, it's not something I have investigated because > I did not expect it to be different on different machines. > > Regards, > > Cathy > > On Fri, Nov 22, 2013 at 3:06 AM, Philip Martin > <philip.mar...@wandisco.com> wrote: >> Cathy Fitzpatrick <ca...@cathyjf.com> writes: >> >>> First, `svn patch` is different from some other svn commands in that >>> it always sets mode 600 on the file regardless of umask or anything >>> else. >> >> I see patch setting permissions according to umask. Why are you seeing >> something different? Which version of Subversion are you using? >> >> svnadmin create repo >> svn import -mm repo/format file://`pwd`/repo/f >> svn co file://`pwd`/repo wc >> echo xx >> wc/f >> (cd wc && svn diff) > p >> svn revert -R wc >> >> Now >> >> $ ls -l wc/f >> -rw-r--r-- 1 pm pm 2 Nov 22 10:03 wc/f >> $ (umask 070 && svn patch p wc) >> U wc/f >> $ ls -l wc/f >> -rw----rw- 1 pm pm 5 Nov 22 10:00 wc/f >> >> I get that behaviour with 1.7, 1.8 and trunk. >> >> -- >> Philip Martin | Subversion Committer >> WANdisco // *Non-Stop Data*