Forma adecuada de agregar svn: ejecutable

107

Tengo algunos archivos que se han ejecutado antes de que svn los agregue. Tienen la propiedad svn: ejecutable establecida. Ahora, algunos otros archivos se registraron sin el bit ejecutable no lo tengo, y quiero establecer la propiedad svn: ejecutable:

$ svn propset svn:executable on *.cgi

Luego verifico el estado e incluso los archivos con el svn: ejecutable se han modificado:

$ svn diff
Property changes on: a.cgi
___________________________________________________________________
Modified: svn:executable
   - 
   + *


Property changes on: b.cgi
___________________________________________________________________
Added: svn:executable
   + *

a.cgi no debe modificarse. Quiero agregar el bit svn: ejecutable para que se establezca de la misma manera que en los otros archivos, pero no puedo descifrar el comando para hacerlo.

Jake
fuente
2
Abro esta página cada vez que no quiero escribir svn propset svn:executable on (...). Y la respuesta a la pregunta debería ser for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; done, y simplemente confirme los archivos modificados. Entonces sigue adelante.
Tomasz Gandor
@TomaszGandor Piensa que te falta svn:executableen algún lugar de ese segundo fragmento. svn ps svn:executable on $f;¿ Quizás ?
Keith M
1
en.wikipedia.org/wiki/Ellipsis_(linguistics) - sí, se dejó como ejercicio para el lector.
Tomasz Gandor

Respuestas:

166

Tiene razón al usar los comandos de edición de propiedades svn. La propiedad es svn: ejecutable.

Para agregar el "bit ejecutable" en svn

svn propset svn:executable on <list of files>

Para eliminar el "bit ejecutable" en svn

svn propdel svn:executable <list of files>

La documentación de SVN para esto se encuentra aquí.

En cuanto a no modificar los ejecutables, no está modificando el ejecutable (una suma de comprobación lo verificará), pero está modificando el repositorio SVN. Recuerde que SVN revisa los sistemas de archivos, no solo los archivos; por lo tanto, una modificación de los bits de permiso aumentará el número de revisión de SVN, incluso si es solo una modificación de las propiedades de un archivo (y no una modificación del archivo en sí).

Edwin Buck
fuente
Cuando ejecuto svn propset de la manera que se muestra arriba, los establece en "*" pero la forma natural establece svn: ejecutable en nada, pero que todavía está configurado. Quiero que esta propiedad sea la misma que aquellas cuyo bit ejecutable se estableció antes de agregarlas a la subversión.
Jake
2
Lo siento por todas las ediciones, pero si recuerdo correctamente, tenerlo configurado en cualquier cosa activará el bit ejecutable, eliminarlo (y posiblemente establecerlo en nulo o espacio en blanco) lo desactivará. Para obtener el valor que estaba usando su cliente SVN, se puede usar un propget svn.
Edwin Buck
-2

Así es como configuro la propiedad ejecutable en todos los archivos * .py en mi proyecto que tienen el bit de ejecución establecido en ellos. Ejecuto esto desde el directorio de nivel superior

for f in `find ./ -name '*.py'`; do echo $f; if [ -x $f ]; then echo $f 'is executable setting svn:executable'; svn propset svn:executable on $f; else echo $f 'is not executable'; fi; done;
Isaac Jessop
fuente
¿Cómo se establece el atributo ejecutable sin usar propset? Yo no lo usé, y hasta donde yo sé, nadie más lo hizo tampoco. Aparece en tres archivos en el mismo directorio y en ningún otro lugar, y no parece haber nada especial en esos archivos. (Son archivos java, no sh o exe o bat o jar o lo que sea)
Jerry Miller
Creo que si el archivo tiene el bit ejecutable establecido cuando se importa inicialmente, se establecerá la propiedad ejecutable svn.
Isaac Jessop
bastante seguro que find tiene un interruptor -perm que podría ser un poco más elegante que el if / then pero, por supuesto, sería más para recordar
Never Sleep Again