db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michelle Caisse <Michelle.Cai...@Sun.COM>
Subject Spurious executable file property in svn repository
Date Wed, 31 Aug 2005 23:20:20 GMT
Hi,

There has been discussion here about the Windows subversion client 
automatically assigning the executable property to non-executable files. 
I believe I have a solution for this.  I also suggest that we clean up 
the executable properties currently in the repository.

BACKGROUND

Subversion carries executable information in the built-in property 
called svn:executable.  This property, unlike others,  may be present or 
absent, but it has no value.  You can add it or delete it, but but you 
cannot change it.

In theory, subversion ignores Windows file permissions; by default 
svn:executable is not set. In fact, cygwin svn acts like Unix svn and 
determines the svn:executable property based on file permissions..

If you create a file via the cygwin command line,  by default it is 
executable only if the filename ends with .bat, .com or .exe*, or if its 
content starts with #!.  [That's what the doc says, but even in these 
cases I get -x.] If you create a file via a Windows tool by default its 
Windows permissions are executable by all and cygwin interprets the 
Unix-style permissions this way as well.  If the file is executable by 
all, cygwin svn sets the svn:executable property on the file.

RECOMMENDED ACTIONS

(1) I suggest that we run
     svn propdel -R svn:executable .
from jdo to remove the svn:executable property from all of the files in 
all the projects in the repository and check in the cleansed files.

(2) I suggest that Windows/cygwin users who don't want to have to think 
about using svn propdel or chmod use a non-cygwin version of svn.  I 
installed the Subversion 1.2.3 Win32 binaries from the link at the 
bottom of http://subversion.tigris.org/project_packages.html.  It seems 
to work fine.  You will have to add the svn.exe location to your Windows 
PATH variable, of course.  You will also need to rename the svn in your 
cygwin install to something else because when svn is invoked from a 
cygwin window, the cygwin version is found even if your cygwin/bin 
directory is later on the path.

Alternatively, Windows users could set file permissions in Windows 
Explorer. (Right-click on the top-level folder & select Properties. 
Select the Security tab. Click Advanced. Remove all instances of Read & 
Execute from the Permission Entries. Click "Reset permissions on all 
child objects and enable propogations of inheritable permissions". Click 
Apply. OK. OK.) You would have to do this again when you do a clean 
checkout. 

Comments?

-- Michelle

Mime
View raw message