2008-09-19 17 views
50

Tengo una aplicación de código abierto alojada en code.google.com. Es multiplataforma (Linux/Windows/Mac). Cargué el código inicialmente desde una máquina WinXP usando TortiseSVN y parece que ninguno de los archivos por lotes "configurados" que se usan para la construcción de Linux tiene sus bits de "ejecución" establecidos.Configurar el bit SVN "execute" en un repositorio de Subversion usando TortiseSVN o la línea de comando SVN

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

Respuesta

20

Con Tortoise SVN, es muy fácil: puede seleccionar varios archivos (pueden ser de resultados de búsqueda, para que no tengan que estar en el mismo directorio), seleccione "propiedades" en el menú de TortoiseSVN, agregue la propiedad necesaria (hay una lista desplegable de los más utilizados) propiedades, en este caso "svn: ejecutable") y establecer el valor (en este caso "*"). Si se comprometen los archivos modificados y se comprueban 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 correctas para un archivo, exportarlas a un archivo, seleccionar todos los archivos necesarios, seleccionar el menú "propiedades" e importar las propiedades previamente guardadas.

83

Así es como 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 
+3

Su abeto La versión st fallará en cualquier ruta o nombre de archivo con espacio en blanco ... – tobyodavies

+2

También puede usar propset en una lista de archivos; consulte http://stackoverflow.com/a/5757365/134647 – khedron

+10

Tenga en cuenta que para borrar el bit ejecutable, tiene que usar svn propdel svn: ejecutable . No puede simplemente configurarlo en "no". –

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

Por supuesto, lo mismo vale para .exe, etc.

+0

¿Esta es la versión de Windows? Solo me pregunto, que [la respuesta de erik] (https://stackoverflow.com/a/4624864/384674), que es más joven tiene más votos, me parece bastante igual ... – Betlista

7

El uso de Unix {} para adress resulset:

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

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

+7

LA svn: la propiedad ejecutable es un valor booleano. Configurarlo en "sí" o "*" o _ cualquier cosa_ es suficiente. svn comprueba si la propiedad está configurada, no su contenido; la mayoría de los clientes informan el valor como '*' incluso si lo configura en 'sí'. – Grhm

1

método para restaurar los permisos de ejecución que se pierden durante la importación SVN:

permisos de copia de su fuente original que utilizó durante la importación SVN (actual dir para version1):

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

a continuación, establecer sVN: ejecutable para todos los ejecutables utilizando el siguiente script:

for file in `find . -executable -type f`; do 
    svn ps svn:executable yes ${file} 
done 
Cuestiones relacionadas