2008-09-19 18 views
50

J'ai une application open-source hébergée sur code.google.com. C'est une plate-forme multiplateforme (Linux/Windows/Mac). J'ai téléchargé le code initialement à partir d'une machine WinXP en utilisant TortiseSVN et il semble qu'aucun des fichiers de commandes "configure" qui sont utilisés pour la construction de Linux n'ait son ensemble de bits "execute".Définition du bit "execute" SVN dans un référentiel Subversion à l'aide de TortiseSVN ou de la ligne de commande SVN

Quel serait le moyen le plus simple de les définir pour les fichiers qui en ont besoin? Utiliser TortiseSVN 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.

Répondre

20

Avec tortoisesvn, il est assez facile: vous peut sélectionner plusieurs fichiers (peuvent provenir des résultats de la recherche, ils n'ont pas besoin d'être dans le même répertoire), sélectionner "propriétés" dans le menu TortoiseSVN, ajouter la propriété nécessaire (il y a une liste déroulante des plus utilisés propriétés, dans ce cas "svn: exécutable") et définissez la valeur (dans ce cas "*"). Si vous validez les fichiers modifiés et que vous les récupérez 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 pour un fichier, de les exporter dans un fichier, de sélectionner tous les fichiers requis, de sélectionner le menu "properties" et importer les propriétés précédemment enregistrées.

83

Voici comment faire 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 de fichier ici):

svn ps svn:executable yes configure 
+3

Votre sapin st version échouerait sur tous les chemins ou les noms de fichiers avec des espaces ... – tobyodavies

+2

Vous pouvez également utiliser propset sur une liste de fichiers - voir http://stackoverflow.com/a/5757365/134647 – khedron

+10

Notez que pour effacer le bit exécutable vous avoir à utiliser svn propdel svn: exécutable . Vous ne pouvez pas simplement le mettre à "non". –

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

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

+0

Ceci est une version de Windows? Je me demandais juste, que [la réponse d'erik] (https://stackoverflow.com/a/4624864/384674), qui est plus jeune a plus de votes, me semble assez similaire ... – Betlista

7

Sur usage Unix {} pour adresse resulset:

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

Est-ce que quelqu'un sait pourquoi cette propriété exige "oui" comme valide argument? trouvé un autre exemple avec « » au lieu de oui, fonctionne aussi ...

+7

La svn: la propriété exécutable est une valeur booléenne. Le réglage sur "oui" ou "*" ou "tout" est suffisant. svn vérifie si la propriété est définie, pas son contenu - la plupart des clients déclarent la valeur '*' même si vous la définissez sur 'oui'. – Grhm

1

Méthode pour la restauration des autorisations exécutables qui sont perdues lors de svn import:

autorisations de copie de votre source d'origine que vous avez utilisé lors de l'importation svn (courant dir à version1):

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

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

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