
On Sat, Mar 22, 2008 at 02:03:21PM -0400, Beman Dawes wrote:
There are really two issues here: (1) Clearing svn:executable in Subversion (not just in branches/release, I assume), and
For 90% of the files it could be done in a few seconds. Remaining files need to be inspected more carefully.
(2) preventing this from happening in the future.
I think it is possible that most wrong permissions could come from the previous CVS repository. CVS itself used the initial permission during the check-in and saved these. Since Windows systems don't know anything about executable permissions it was assumed that each file is executable to be on the save side (it doesn't hurt on Unix systems it is just ugly, why should some wrongly marked executable *.cpp files be displayed in a red color, but others in green?). I applied the following script to iterate over all executable .cpp files and to print the name of the author who did the initial commit: for i in $(find -type f -iname "*.cpp" -perm +111); do \ svn log -r 1:HEAD --limit 1 --xml "$i" | grep author; \ done | sed -e 's,^<author>,,' -e 's,</author>,,' | sort | uniq It displays: alnsn anthonyw daniel_wallin david_abrahams dgregor eric_niebler hljin johnmaddock jsiek matiascape nesotto rogeeff rwgk turkanis vertleyb witt Probably the list would be different once only files created after the migration to Subversion would be considered but I did it as described ...
An alternative is to not worry about Subversion, but to clear out the wrong permissions in the snapshot script, trunk/tools/release/snapshot_windows.sh and snapshot_posix.sh.
Ah, that's ugly. Subversion is (opposed to CVS) able to manage properties and svn:executable is just a special one. It is able to merge such commits and to revert so let's change Subversion's repository. There is also no strong need to do it before the release. But as only properties are fixed and no content it is hard to break something and I'm sure (Linux) distributors would fix permissions themself to avoid uglyness installed on the system ...
Without knowing how the svn:executable property got set in the first place I can't tell if this is a one time or recurring problem. Any ideas?
Probably from CVS and only from Windows users. Let's fix it and watch ... There should be a default setting in each Subversion client (the default on Posix systems is to use the filesystem properties) and a good default for Windows is probably svn:executable turned off (since it is unlikely (but not impossible) that Windows guys create scripts. PS: Don't forget that also the svn:eol-style property should be set to native for text files to get proper line endings (Posix: \n, Windows: \r\n, MacOS: \r) You once wrote a mail and asked for confirmation. Do you remember? Again fixing 90% of all files is a matter of seconds. Jens