On 04.08.2010 12:14, Julian Foad wrote:
> On Tue, 2010-08-03 at 20:08 +0300, Daniel Shahaf wrote:
>   
>> Julian Foad wrote on Tue, Aug 03, 2010 at 17:36:00 +0100:
>>     
>>> On Tue, 2010-08-03 at 18:19 +0300, Daniel Shahaf wrote:
>>>       
>>>> Daniel Shahaf wrote on Tue, Aug 03, 2010 at 11:58:32 +0300:
>>>>         
>>>>> There was yesterday on IRC [1] some discussion around whether revprop
>>>>> editing can corrupt rev files.
>>>>>
>>>>> [[[
>>>>> 0:% rm -rf r        
>>>>> 0:% ./subversion/svnadmin/svnadmin create r
>>>>> 0:% ls -l r/db/revs/0/0
>>>>> -rw-r--r-- 1 daniel daniel 115 2010-08-03 11:56 r/db/revs/0/0
>>>>> ]]]
>>>>>
>>>>> Shouldn't we create rev files with the write bit disabled?  (i.e., 0222 
>>>>> umask)
>>>>>           
>>>> r981921 + nominated for backport.
>>>>         
>>> The idea looks sane.
>>>
>>> There's perhaps a problem with revPROPS files: fs_fs.c copies the
>>> permissions of a revprops file from the corresponding rev file, which
>>> now means all revprops files will be read-only, which might cause a
>>> problem when trying to edit a revprop.
>>>
>>>       
>> Good catch.
>>
>> As far as I can tell, 'svnadmin setrevprop' and 'svn propset --revprop'
>> still work and fs-test and fs-pack-test (which test svn_fs_change_rev_prop())
>> still pass (even though the revprop files are mode 0444), so I'm tempted to
>> leave the code as-is.
>>
>> Does anyone see a problem here, or see an error when trying to edit revprops
>> with this patch applied?
>>     
> I didn't encounter a problem on Ubuntu, in a simple manual test (not
> trying this within the test suite, this time).
>
> "svn propset --revprop -r <REV> ...": for a packed rev it modified
> 'revprops.db', leaving that file read-write, and for a not-yet-packed
> revision (r30) it modified the file 'revprops/3/30', leaving that file
> read-only.
>
> "svnadmin pack" worked, and the pack files and manifests are read-only.
>   

I'm assuming "svnadmin pack" deletes obsolete revprop files. Read-only
files can be deleted on Unix as long as the containing directory is
read-write. This needs to be tested on Windows, where that is not the case.

-- Brane

Reply via email to