Définir le bit SVN «execute» dans un repository Subversion en utilisant TortoiseSVN ou la ligne de commande SVN

J’ai une application open source hébergée sur code.google.com. C’est une plate-forme croisée (Linux / Windows / Mac). J’ai initialement téléchargé le code depuis une machine WinXP à l’aide de TortoiseSVN et il semble qu’aucun des fichiers batch “configure” utilisés pour la génération Linux n’ont leur bit “execute” défini.

Quel serait le moyen le plus simple de les définir pour les fichiers qui en ont besoin? Utiliser TortoiseSVN serait plus facile, je suppose, mais si cela ne peut pas être utilisé, alors je pourrais aussi utiliser la ligne de commande SVN sur ma machine Linux.

Avec tortoise SVN, c’est assez simple: vous pouvez sélectionner plusieurs fichiers (il peut s’agir de résultats de recherche, ils ne doivent donc pas nécessairement se trouver dans le même répertoire), sélectionnez “propriétés” dans le menu TortoiseSVN, ajoutez la propriété requirejse (il y a une liste déroulante des propriétés les plus utilisées, dans ce cas “svn: executable”) et définissez la valeur (dans ce cas “*”). Si les fichiers modifiés sont validés et vérifiés sous Linux, le bit exécutable sera défini.

Si vous souhaitez définir plus d’une propriété à la fois, il peut être plus sûr (en cas d’erreur) de définir d’abord les propriétés pour un fichier, de les exporter dans un fichier, de sélectionner tous les fichiers nécessaires, de sélectionner le menu “Propriétés”. et importer les propriétés précédemment enregistrées.

Voici comment procéder sur la ligne de commande:

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

Ou pour un seul fichier ( configure est le nom du fichier ici):

 svn ps svn:executable yes configure 

Sur Unix, utilisez {} pour adresser le resulset:

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

Est-ce que quelqu’un sait pourquoi cette propriété nécessite “oui” comme argument valide? J’ai trouvé un autre exemple avec ” au lieu de oui, ça marche aussi …

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

Bien sûr, la même chose vaut pour .exe, etc.

Méthode de restauration des permissions exécutables perdues lors de l’importation svn:

Copiez les permissions de votre source d’origine que vous avez utilisée lors de l’importation de svn (répertoire actuel de la version1):

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

puis définissez svn: executable pour tous les exécutables en utilisant le script shell suivant:

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