J'ai une application open source hébergée sur code.google.com. C'est multi-plateforme (Linux/Windows/Mac). J'ai téléchargé le code initialement à partir d'une machine WinXP à l'aide de TortoiseSVN et il semble qu'aucun des bits de "configuration" de lot qui sont utilisés pour la construction de linux ait leurs bits "exécuter" définis.
Quelle serait la façon la plus simple de les définir pour les fichiers qui en ont besoin? L'utilisation de TortoiseSVN serait plus facile, je suppose, mais si cela ne peut pas être utilisé, je pourrais également utiliser la ligne de commande SVN sur ma machine Linux.
Avec tortoise SVN, c'est assez simple: vous pouvez sélectionner plusieurs fichiers (peut-être à partir des résultats de la recherche, donc ils ne doivent pas être dans le même répertoire), sélectionnez "propriétés" dans le menu TortoiseSVN, ajoutez la propriété nécessaire (il y a une liste déroulante des propriétés les plus utilisées, dans ce cas "svn: exécutable") et définissez la valeur (dans ce cas "*"). Si vous validez les fichiers modifiés et les extrayez sous linux, le bit exécutable sera défini.
Si vous souhaitez définir plusieurs propriétés à la fois, il peut être plus sûr (en cas d'erreur) de définir correctement les propriétés d'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 importez 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
Sous Unix, utilisez {} pour traiter l'ensemble de résultats:
find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \;
Est-ce que quelqu'un sait pourquoi cette propriété requiert "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, il en va de même pour .exe, etc.
Méthode de restauration des autorisations exécutables perdues lors de l'importation svn:
copier les autorisations de votre source d'origine que vous avez utilisées lors de l'importation svn (répertoire actuel vers version1):
find . -type f | xargs -I {} chmod --reference {} ../version1/{}
puis définissez svn: exécutable pour tous les exécutables à l'aide du script Shell suivant:
for file in `find . -executable -type f`; do
svn ps svn:executable yes ${file}
done