2011-04-22 2 views
84

J'ai quelques fichiers qui ont été exécutables avant de les ajouter svn. Ils ont l'ensemble de propriétés svn: executable. Maintenant, quelques autres dossiers ont été vérifiés dans sans le bit exécutable ne l'ont pas, et je veux mettre la propriété svn: exécutable:Une bonne façon d'ajouter svn: exécutable

$ svn propset svn:executable on *.cgi 

Ensuite, je vérifie l'état et même les fichiers avec le svn: exécutable ont été modifiés:

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


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

a.cgi ne doit pas être modifié. Je veux ajouter le bit svn: exécutable de la même manière que sur les autres fichiers, mais je ne peux pas trouver la commande pour le faire.

+2

J'ouvre cette page chaque fois que je ne veux pas taper 'svn propset svn: exécutable sur (...)'. Et la réponse à la question devrait être 'for f in * .cgi; fais si [! -x $ f]; alors svn ps (...); Fi; done', et juste commettre les fichiers modifiés. Ensuite, continuez. –

+0

@TomaszGandor Vous pensez qu'il manque svn: executable' quelque part dans ce second fragment. Peut-être 'svn ps svn: exécutable sur $ f;'? –

+0

https://en.wikipedia.org/wiki/Ellipsis_(linguistique) - oui, il a été laissé comme un exercice pour le lecteur. –

Répondre

128

Vous avez raison d'utiliser les commandes d'édition de la propriété svn. La propriété est svn: exécutable.

Pour ajouter le "bit exécutable" dans svn

svn propset svn:executable on <list of files> 

Pour supprimer le "bit exécutable" dans svn

svn propdel svn:executable <list of files> 

The SVN documentation for this is located here.

En ce qui ne modifiant pas les executables, vous ne modifient pas l'exécutable (une somme de contrôle le vérifiera), mais vous modifiez le référentiel SVN. Rappelez-vous que les systèmes de fichiers de révision SVN, pas seulement les fichiers; ainsi, une modification des bits d'autorisation augmentera le numéro de révision SVN, même si c'est juste une modification des propriétés d'un fichier (et non une modification du fichier lui-même).

+0

Quand je lance svn propset de la manière indiquée ci-dessus, il les met à « * », mais les ensembles de façon naturelle svn: exécutable à rien, mais qui est toujours fixé. Je veux que cette propriété soit la même que celles dont le bit exécutable a été défini avant de les ajouter à subversion. – Jake

+2

Désolé pour toutes les modifications, mais si je me souviens bien, l'avoir réglé sur quoi que ce soit s'allume le bit exécutable, la suppression (et éventuellement le mettre à null ou espace) se désactiver. Pour obtenir la valeur que votre client SVN utilisait, un svn propget peut être utilisé. –

-3

Voici comment je défini la propriété exécutable sur tous les fichiers * .py dans mon projet qui ont execute peu mis sur eux. J'exercerai ce à partir du répertoire de haut niveau

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;