Bonjour !
Bon, ça faisait longtemps que Subversion ne m'avait plus posé de problème, j'avais eu le temps de paufiner mon appli tranquilement, jusqu'à arriver à un problème insoluble à mes yeux....
Pour rappel, Subversion (SVN), est un logiciel de versionning, qui s'installe sur le serveur et qui gère des dépôts ( équivalent d'un répertoire classique, mais la gestion derrière est très lourde, pour exemple, chaque version d'un fichier est stockée, si vous modifiée 1000 fois un fichier, il sera 1000 fois dans le dépôt....)
Y a notamment qq commandes que l'on peut utiliser en ligne de commande précédée de l'instructions "svn", comme "svn diff", qui n'est autre qu'un adaptation du classique "diff" unix au logiciel Subversion.
Bref, j'ai un script, enfin, des scripts, mais on va simplifier, qui s'occupe de gérer le dépôt via une IHM web programmée en PHP.
Seulement voilà, quand je veux, via mon IHM, faire une copie d'un répertoire vers un autre ( dans deux dépôt différents de SVN ), pas de problème.
La commande est :
Cela revient à créer un nouveau répertoire dans le second dépôt à à copier tout le contenu du premier dans le second.
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec('svn copy '.$urlSrc.' '.$urlDst.'/'.$nomNouveauRep, $puit, $tag) ;
En revanche, quand je veux créer un dossier, impossible !
L'erreur suivante est générée ( dans le log des erreurs d'Apache ) :
NB : Un Working Copy est un répertoire géré par SVN, un dépôt.svn: Can't open file '/home/subversion/.../Depot1/.svn/lock': Permission denied
svn: '/home/www/monSite/' is not a working copy
Alors que ma commande est somme toute assez identique :
J'ai bien entendu vérifié que le contenu de ma commande était la bonne, et ça donne effectivement bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec('svn mkdir '.$_SESSION['urlDepot1'].$nomNouveauRep, $puit, $creation) ;
C'est donc a priori un problème de droit, puisque quand je fais l'execution en ligne de commande avec le svnroot elle fonctionne, mais pas avec l'utilisateur lambda....
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec(svn mkdir /home/subversion/.../Depot1/Toto, $puit, $creation) ;
Je me demande donc comment donner les droits d'accès à PHP.
Néanmoins, je me pose donc la question : Pourquoi je peux faire une copy d'un dossier ( et donc créer un dossier avec le contenu d'un autre ), mais pas créer un dossier vide ? Quel type de droit d'accès empêche l'un mais pas l'autre ? ( D'autant que mon Depot1 et mon Depot2 sont en CHMOD 777, même si ce n'est pas le cas de leurs fils... )
La deuxième ligne du message d'erreur m'embête tout autant, j'ai l'impression qu'il tente d'éxecuter la commande depuis le répertoire www/monSite et non pas dans /home/subversion/.../Depot1, ou alors elle est liée à la première erreur ?
Bref, un point de vue nouveau serait le bienvenue !
Partager