Establecer el bit SVN "execute" en un repositorio Subversion usando TortoiseSVN o SVN de línea de comandos


Tengo una aplicación de código abierto que está alojada en code.google.com. Es multiplataforma (Linux / Windows / Mac). Subí el código inicialmente desde una máquina WinXP usando TortoiseSVN y parece que ninguno de los archivos por lotes " configure "que se utilizan para la compilación de linux tiene sus bits" execute " establecidos.

¿Cuál sería la forma más fácil de establecer estos para los archivos que los necesitan? Usar TortoiseSVN sería más fácil, supongo, pero si eso no se puede usar, entonces también podría usar línea de comandos SVN en mi máquina linux.

Author: Laurent H., 2008-09-19

5 answers

Con tortoise SVN, es bastante fácil: puede seleccionar varios archivos (pueden ser de los resultados de búsqueda, por lo que no tienen que estar en el mismo directorio), seleccionar "propiedades" en el menú TortoiseSVN, agregar la propiedad necesaria (hay una lista desplegable de las propiedades más utilizadas, en este caso "svn:executable") y establecer el valor (en este caso "*"). Si confirma los archivos cambiados y los comprueba en Linux, se establecerá el bit ejecutable.

Si desea establecer más de una propiedad a la vez, puede ser más seguro (en caso de errores) establecer primero las propiedades correctamente para un archivo, exportarlas a un archivo, seleccionar todos los archivos necesarios, seleccionar el menú "propiedades" e importar las propiedades guardadas previamente.

 20
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 16:38:56

Aquí está cómo hacerlo en la línea de comandos:

for file in `find . -name configure`; do
  svn ps svn:executable yes ${file}
done

O para un solo archivo (configure es el nombre del archivo aquí):

svn ps svn:executable yes configure
 83
Author: bmdhacks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 16:32:34

En Unix use {} para dirigirse a resultset:

find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \;

¿Alguien sabe por qué esta propiedad requiere "sí" como argumento válido? Encontré otro ejemplo con " en lugar de sí, también funciona...

 7
Author: Erik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-09 04:34:24
find . -type f -name "*.bat" -exec svn propset svn:executable yes "${}" \;

Por supuesto, lo mismo ocurre .exe, etc.

 4
Author: Tim Ottinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-13 07:44:13

Método para restaurar permisos ejecutables que se pierden durante la importación de svn:

Copie los permisos de su fuente original que usó durante la importación de svn (directorio actual a la versión1):

find . -type f | xargs -I {} chmod --reference {} ../version1/{}

Luego establezca svn: executable para todos los ejecutables usando el siguiente script de shell:

for file in `find . -executable -type f`; do
  svn ps svn:executable yes ${file}
done
 1
Author: ldgorman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-12 14:54:24