Question

Comment stockez-vous les autorisations de fichier dans un référentiel?Quelques fichiers doivent être en lecture seule pour arrêter un programme tiers de bousiller mais, après vérification du référentiel ils sont en lecture-écriture.

J'ai cherché sur google et trouvé un blog de 2005 que les états qui Subversion ne pas stocker le fichier des autorisations.Il ya des taches et crochet-scripts répertoriées (une seule url existe toujours).Trois ans plus tard, ne Subversion toujours pas stocker les autorisations de fichier et crochets sont la seule façon d'aller à ce sujet?(Je n'ai jamais fait de crochets et de plutôt utiliser quelque chose qui est originaire de la Subversion.)

Était-ce utile?

La solution

Une solution possible serait d'écrire un script que vous signez avec le reste de votre code qui est exécuté en tant que première étape de votre processus de build.

Ce script s'exécute par le biais de votre copie de la base de code et d'ensembles d'autorisations de lecture sur certains fichiers.

Idéalement, le script va lire la liste des fichiers à partir d'un simple fichier d'entrée.Il est facile à entretenir et facile pour les autres développeurs de comprendre les fichiers marqués comme étant en lecture seule.

Autres conseils

SVN n'ont la capacité de stocker les métadonnées (propriétés avec un fichier.Les propriétés sont en fait que des paires clé/valeur, cependant, il ya certaines touches spéciales comme le "svn:exécutable', si cette propriété existe pour un fichier, Subversion va définir le système de fichiers exécutable bits pour que le fichier lors de la vérification du fichier.Même si je sais que ce n'est pas exactement ce que vous cherchez c'est peut-être juste assez, ce l'était pour moi).

Il y a d'autres propriétés de fin de ligne (svn:eol-style) et le type mime(svn:mime-type).

Il n'y a pas moyen natif de stocker des autorisations de fichier SVN.

Les deux asvn et le patch à partir de ce blog semblent être en hausse (et hébergé sur le dépôt SVN officielle), et c'est une bonne chose, mais je ne pense pas qu'ils auront ces métadonnées dans la base de la version tout moment bientôt.

SVN a eu la capacité de gérer les liens symboliques et les exécutables spécialement pendant un long moment, mais ni fonctionner correctement sur Win32.Je ne voudrais pas retenir mon souffle pour un autre exemple de non-portable fonctionnalité, même si elle ne devrait pas être trop difficile à mettre en œuvre sur le dessus de l'existant système de métadonnées.)

Je considère l'écriture d'un script shell pour régler manuellement les autorisations de fichier, puis le mettre dans le référentiel.

Car ce n'étais pas tout dit dans les précédentes réponses encore.J'ai hate de ressusciter zombied threads bien.

Depuis l'ajout de la permission de soutien pour SVN aurait pour accueillir plusieurs OS et des types d'autorisation, NFS, POSIX, ARWED, et RACF

Ce serait SVN de ballonnement, éventuellement, d'affrontement avec des conflits d'autorisation des types comme NFS et POSIX, ou ouvrir les exploits possibles/failles de sécurité.

Il ya un couple de solutions de contournement.pre-commit, post-commit, start-commit sont les plus couramment utilisés, et sont une partie de la Subversion du système.Mais vous permettra de contrôler les autorisations avec ce que jamais le langage de programmation que vous aimez.

Le système que j'ai mis en place est ce que j'appelle un conditionneur, qui valide l'engagement des fichiers de la copie de travail, puis analyse d'un fichier de métadonnées, qui répertorie les autorisations par défaut souhaitée pour les fichiers/dossiers, et tous les changements que vous aussi désirez.

Owner, Group, Folders, Files
default: <user> www-user 750 640
/path/to/file: <user> non-www 770 770
/path/to/file2: <user> <user> 700 700

Vous pouvez également étendre sur cela et laisser les choses telles que automatisé de déplacer, de renommer, de marquage de révision par types, comme les alpha, bêta, la version release candidate, la libération

Soutenir les clients à la caisse de votre référentiel de fichiers avec des autorisations joint à eux.Vous êtes mieux de regarder dans la création d'un programme d'installation de votre colis et offrant que comme une ressource.

Imaginez des gens la définition de leurs dépôts avec un exécutable dans la configuration de permissions de root:www-utilisateur 4777

Cette est le lien mis à jour par SVN patch qui gère le style unix autorisations de fichier correctement.Je l'ai testé sur fedora12 et semble fonctionner comme prévu:

J'ai juste sauvé il /usr/bin/asvn et l'utilisation asvn au lieu de la commande svn si j'ai besoin d'autorisations manipulé correctement.

De nombreuses réponses ont indiqué que svn ne stocke pas les autorisations de fichier.Cela peut être vrai, mais j'ai été en mesure de résoudre un fichier dll sans autorisations d'exécution problème tout simplement par ces étapes:

  1. chmod 755 badpermission.dll
  2. mv badpermission.dll ../
  3. svn update
  4. svn rm badpermission.dll
  5. svn commit badpermission.dll -m "Supprimer la dll fixer les permissions"
  6. mv ../badpermission.dll .
  7. svn add badpermission.dll
  8. svn commit badpermission.dll -m "Ajout de la dll en arrière pour réparer les autorisations"
  9. rm badpermission.dll
  10. svn update
  11. badpermission.dll revient avec les autorisations d'exécution

@morechilli:

Le asvn wrapper de mon précédent post et le blog dans le cas des OP post semble faire ce qu'on vous suggère.Bien qu'il stocke les autorisations dans les fichiers correspondants' repository propriétés par opposition à un seul fichier externe.

Je le recommande pour générer des autorisations de carte à l'aide de mtree utilitaire (FreeBSD a par défaut), le magasin de la carte dans le référentiel, et, comme il a été mentionné ci-dessus, exécutez un script qui permettrait de rétablir un bon autorisations de fichier de la carte comme la première étape du processus de construction.

Le verrouillage ne résoudra pas ce problème.Le verrouillage s'arrête d'autres d'éditer le fichier.C'est une application tierce qui est exécuté dans le cadre du processus de génération qui essaie d'écrire dans un fichier - changer - qui interrompt le processus de génération.Donc nous avons besoin d'arrêter le programme de modifier le fichier qui est marquant simplement le fichier en lecture seule.Nous tenons cette information pour être tenu dans le référentiel et l'ensemble des archivages, branches, etc.

Graham, svn ne stocke pas les autorisations.Votre seule option est de les envelopper votre appel svn dans un script.Le script doit appeler svn avec ses arguments, puis définissez les autorisations par la suite.En fonction de votre environnement, vous pourriez avoir besoin d'appeler votre script svn et de modifier votre PATH pour s'assurer qu'il est appelé.

J'aime assez morechilli l'idée d'avoir la liste des fichiers et des autorisations de vérification dans le référentiel lui-même.

Nous avons créé un fichier de commandes pour le faire pour nous.Préférez prise en charge réelle de la subversion, par contre...

Pensez à utiliser svn lock à en interdire d'autres à partir de l'écriture du fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top