svn: No write-lock in '/home/project/directory'

Portrait de titouille

Haa, les joies de SVN.

J'en ai lu des vertes et des pas mûres sur SVN. ça passe du mec qui annonce que SVN c'est de la M**** parce qu'il n'y comprend rien, à celui qui ne jure que par ça car il gère des dizaines de projets avec et que ça tourne très bien.

J'aurai tendance à être relativement positif en parlant de SVN car c'est un bon outil qui permet de faire du partage de projet, de la gestion de conflits entre différentes versions, du commit, de l'update, etc...

Maintenant, il arrive toujours qu'un petit message d'erreur vienne se glisser là ou il ne faudrait pas... Genre je veux faire un commit d'un répertoire particulier, et SVN m'annonce un "permission denied" ou encore un "no write-lock"...

Bon, on se dit que ce sont les permissions qui sont foireuse, on ouvre son terminal, on contrôle les permissions du répertoire en question, de son répertoire parent, des fichiers inclus dans le répertoire... Rien n'y fait... pourtant les permissions ont l'air correctes...

On se dit alors que peut être qu'en forçant un peu le truc ça pourrait passer... Alors on fait du chmod 777 sur les répertoires, du chmod 666 sur les fichiers histoire de comprendre, mais toujours pas...

Et après quelques minutes (ou quelques heures, selon l'état de décomposition de notre cerveau après une dure journée de labeur), on fini par comprendre (ou pas... lol).

Perso, je travaille sur mac. Quand on ouvre son terminal et qu'on navigue sur un répertoire, on balance un "ls -l" afin de lister son contenu, et il semble que tout fonctionne correctement. Ce qu'on oublie, c'est que les répertoires qui contiennent l'état "svn" de notre projet sont nommés ".svn", et bien entendu, pour le terminal, un fichier ou dossier débutant par un point est un fichier / dossier caché.

En réalité, lorsqu'on a épuisé toutes les possibilités de chmod, chown, etc... pour comprendre le problème, c'est là qu'on se rend compte que le problème pourrait bien être situé directement dans le répertoire .svn, et c'est bien souvent le cas... c'est un fichier contenu dans .svn qui ne possède pas les bonnes permissions, et subversion (j'utilise eclipse) nous l'indique... Mais il ne nous dit pas que c'est à l'intérieur du répertoire .svn...

Et bien entendu, un "ls -l" ne nous en dis pas plus, puisqu'il ne liste pas les répertoires ".svn".
Bref... "ls -la" est ton ami (ça liste les fichiers / dossiers, même les cachés) et un petit coup de :

find . -name ".svn" -exec chmod -R 775 {} \;

est bien pratique finalement Wink