70 votes

Travail copie verrouillée

Je développe un site web en utilisant Subversion comme système de contrôle de version, mais j'ai reçu le message d'erreur "working directory locked"

Voici l'histoire :

J'ai

PC-A :

  • Windows XP Pro
  • VisualSVN 2.5.2
  • Tortoise SVN 1.7.3

PC-B :

  • Windows XP Home
  • Tortoise SVN 1.7.3

J'ai créé un dépôt sur PC-A en utilisant VisualSVN.

Depuis PC-B, j'ai effectué un Checkout de http:\\PC-A:81\svn\test\trunk vers D:\xampp\htdocs\test-lalala.

Depuis PC-A, j'ai également effectué un checkout de http:\\PC-A:81\svn\test\trunk vers D:\xampp\htdocs\test-lalala.

J'ai créé un hook post-commit qui exécute mon fichier my-post-commit.bat afin que lorsque je commit vers http:\\PC-A:81\svn\test\trunk, le dossier D:\xampp\htdocs\test-lalala sur PC-A soit mis à jour, afin que d'autres personnes puissent voir le résultat.

"C:\Program Files\VisualSVN Server\bin\svn.exe" update "D:\xampp\htdocs\test-lalala" --username myusername --password mypassword --config-dir "C:\Program Files\VisualSVN Server\conf" 

Sur PC-B, j'ai créé le fichier index.php et committé. Lorsque je commit, je reçois ce message d'erreur

message d'erreur

Sur PC-A, j'ai essayé de faire un clic droit sur D:\xampp\htdocs\test-lalala TortoiseSVN > Nettoyer, et de cocher "Nettoyer l'état de la copie de travail" et "Inclure les externes" (coché par défaut). J'ai essayé d'ajouter des fichiers et de committé, mais j'ai toujours eu le même message d'erreur.

J'ai cherché un fichier de verrouillage dans le dossier .svn mais il n'y a pas de fichier de verrouillage. J'ai aussi essayé de supprimer la copie de travail sur PC-A D:\xampp\htdocs\test-lalala et de recheckout, mais lorsque je commit, j'ai toujours reçu le même message d'erreur.

Comment résoudre ce message d'erreur? Ainsi, lorsque je commite, le dossier sera automatiquement mis à jour?

0 votes

La réponse de Jonathon J Howey a fonctionné pour moi. J'ai dû faire une autre chose, c'est fermer mon visual studio avant de nettoyer.

196voto

tatianes Points 1109

Chaque fois que je reçois une erreur de verrouillage de copie de travail, j'exécute une "Nettoyage". Après cela, tout revient à la normale.

Sur la ligne de commande, vous pouvez exécuter svn cleanup qui supprime également les fichiers de verrouillage.

Remarque: effectuez cette opération sur un répertoire supérieur, et cela devrait résoudre la plupart des problèmes.

18 votes

A fonctionné pour moi lorsque j'ai nettoyé un niveau de répertoire au dessus de l'emplacement verrouillé

0 votes

Il fonctionne sur Ubuntu, j'ai Ubuntu sur le client et Linux sur le serveur et cela marche. En fait, ce problème m'arrive plus souvent sur Linux que sur Windows.

5 votes

N'oubliez pas de cocher la case "Casser les serrures" si vous utilisez l'interface graphique.

36voto

jonovate Points 309

À tous ceux qui rencontrent encore ce problème (Erreur : Copie de travail '{DIR}' verrouillée.), j'ai votre solution :

J'ai découvert que lorsqu'une fenêtre de TortoiseSVN plante, elle laisse un TSVNCache.exe qui a encore quelques "handles" vers votre copie de travail et qui provoque les problèmes de verrouillage que vous rencontrez (et empêche également le nettoyage de faire correctement son travail).

Donc pour résoudre ceci :

Soit

1a) Utilisez Process Explorer ou un logiciel similaire pour supprimer les "handles" détenus par TSVNCache.exe

1b) ..Ou encore plus simple, utilisez simplement le Gestionnaire des tâches pour tuer TSVNCache.exe

Ensuite

2) Faites un clic droit -> TortoiseSVN -> Nettoyer. Seule l'option "Nettoyer l'état de la copie de travail" doit être cochée.

À partir de là, bonne mise à jour/commit. Vous pouvez reproduire le comportement de verrouillage en effectuant une mise à jour SVN, puis en tuant rapidement le processus TortoiseProc.exe avant que la mise à jour ne se termine.

0 votes

Juste exécuter le nettoyage a fonctionné pour moi, mais c'était après avoir fermé la session et être revenu, donc cela pourrait avoir tué le processus de cette manière.

0 votes

J'avais Visual Studio en cours d'exécution avec AnkhSVN et j'ai dû le fermer aussi avant que le nettoyage ne fonctionne.

2 votes

Après avoir beaucoup cherché, j'ai enfin trouvé ceci. Cela devrait être plus visible car c'est la seule chose qui a fonctionné pour moi!

22voto

Prince Points 469

Exécutez un "Nettoyage" au niveau du répertoire racine.

2 votes

"Le message d'erreur "le répertoire de travail est verrouillé" peut survenir car il y a un verrou par le client svn lors de l'ajout du dossier/fichier et qu'il n'a pas été correctement validé. Cela peut être réparé en effectuant un nettoyage."

1 votes

J'ai obtenu la même erreur quand je n'ai pas exécuté le nettoyage au niveau du dossier supérieur

4 votes

+1 pour “au niveau du répertoire racine”. Personne d'autre ne le mentionne et il semble important.

7voto

hackintosh152 Points 21

J'ai corrigé en supprimant le dossier caché .svn et en le remplaçant par le nouveau checkout .svn et cela a fonctionné. Probablement que ce dossier caché était corrompu !

5voto

Sadikhasan Points 4428

Je suis sûr que cela fonctionne bien pour vous

Allez au dossier SVN de niveau supérieur.

Cliquez avec le bouton droit sur le dossier (celui qui contient vos fichiers svn) -> TortoiseSVN -> Nettoyer

Cela résoudra certainement votre problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X