web-dev-qa-db-fra.com

Pourquoi je continue à obtenir 'SVN: Working Copy XXXX verrouillée; essayez d'effectuer un "nettoyage"?

Si vous avez déjà utilisé des outils SVN dans Eclipse (Subversion, Subversive) auparavant, vous êtes probablement familiarisé avec l'erreur de "copie de travail" XXX "verrouillée ...".

J'ai trouvé un article très utile avec une solution de contournement pour ce problème à l'adresse: La copie de travail XXX est verrouillée et le nettoyage a échoué dans SVN

Même si la solution de contournement est géniale, il est pénible de le faire encore et encore. Est-ce que quelqu'un sait pourquoi je continue à avoir cette erreur et quelles mesures je pourrais prendre pour la prévenir?

Contexte: je crée un plug-in Eclipse qui implique l'écoute d'événements SVN. Par conséquent, lors du test de ce plug-in, j'ouvre et ferme constamment l'espace de travail. Je fais habituellement 1 ou 2 commits chaque fois que j'ouvre l'espace de travail. De temps en temps, la validation échouera et j'obtiendrai l'erreur «copie de travail verrouillée». J'aimerais que cette erreur ne se reproduise plus, alors tout conseil est apprécié.

Merci!

45
jbranchaud
  1. Sélectionnez le projet
  2. Clic droit sur le projet sélectionné
  3. Equipe -> Nettoyage

Problème résolu.

Remarque: Les étapes ci-dessus ne fonctionneront qu’Eclipse (paquet Indigo)

81
Peter Prabu

Généralement un fichier .lock est créé et il décide de verrouiller/déverrouiller l'état en vérifiant l'existence de ce fichier. Je pense que si vous supprimez ce fichier .lock uniquement, le problème disparaîtra.

14
fmucar

J'ai déjà eu beaucoup de problèmes avec SVN et une chose qui m'a définitivement causé est la modification de fichiers en dehors d'Eclipse ou la suppression manuelle de dossiers (qui contiennent les dossiers .svn), ce qui m'a probablement causé le plus de problèmes. 

modifierVeillez également à ne pas interrompre les opérations SVN, bien qu’un bogue puisse parfois se produire et que le fichier .lock ne soit pas supprimé, et donc votre erreur.

9
Kenny Cason

Assurez-vous de nettoyer exactement ce que dit la console. Par exemple, si un sous-dossier (un package) est verrouillé:

   svn: E155004: Commit failed (details follow):
  svn: E155004: Working copy 'C:\Users\laura\workspace\tparser\src\de\test\order' locked
  svn: E155004: 'C:\Users\laura\workspace\tparser\src\de\test\order' is already locked.

nettoyage C:/Utilisateurs/liparulol/espace de travail/tparser/src/de/mc/etn/analyseurs/commande

Ensuite, vous devez nettoyer le dossier spécifié et non le projet entier. Si vous êtes dans Eclipse, cliquez avec le bouton droit sur le paquet, pas sur le dossier du projet et exécutez le nettoyage.

4
Laura Liparulo

Après plus d'exploration et de tests, il semble que ce problème soit dû au débogage du plug-in et à l'utilisation de points d'arrêt. SVN/Subclipse n'a apparemment pas aimé avoir les points d'arrêt au milieu de leur exécution et, par conséquent, ces fichiers de verrouillage ont été créés. Dès que j'ai commencé à exécuter le plugin, ce problème a disparu.

3
jbranchaud

Cela se produira si quelque chose s'est mal passé dans l'un de vos dossiers dans votre projet. Vous devez trouver le dossier exact qui a été verrouillé et exécuter svn cleanup dans le dossier spécifique. Vous pouvez résoudre ceci comme suit:

  1. exécutez la commande svn commit pour savoir quel dossier a mal tourné.
  2. changez de répertoire dans ce dossier et lancez svn cleanup. Alors c'est fait.
3
Simon

J'ai eu le même problème en utilisant le package com.xxx.service.model

Pour résoudre ce problème, j'ai d'abord effectué une sauvegarde des modifications de code dans le package de modèle. Supprimez ensuite le package de modèle et synchronisez-le avec le référentiel. Il montrera le dossier/package entier entrant. Puis mis à jour mon code.

Enfin, collez l'ancien code validé dans le référentiel SVN. Ça fonctionne bien.

2
Kamalakar Dandu

Les éléments suivants doivent déverrouiller une copie de travail verrouillée (testé sur les versions 1.6.11 et elipse du client svn: version Mars.2 (4.5.2))

étape 1: (allez dans le répertoire de la copie de travail) $ cd working_copy_dir

étape 2: (connectez-vous à la base de données svn sqlite) $ sqlite3 .svn/wc.db

étape 3: (supprime tous les enregistrements de la table WC_LOCK) sqlite> delete from WC_LOCK;

étape 4: (déconnecter de la base de données sqlite 3) sqlite> ctrl + d

étape 5: (à partir d’Eclipse), cliquez avec le bouton droit de la souris sur votre copie de travail, puis cliquez sur Équipe -> Actualiser/Nettoyer

2
SayeedSohail

Cela m'est arrivé lorsque j'ai copié un répertoire d'un autre projet Subversion et que j'ai tenté de le valider. La solution consistait à supprimer le directeur .svn dans le répertoire que je voulais valider.

1
Tony Striedinger

Solution: Étape 1: Vous devez supprimer le fichier “verrouillé” qui se trouve sous le fichier caché “.svn” . Étape 2: Dans le cas où il n'y a pas de “verrou” fichier, vous verrez alors «we.db», vous devez ouvrir cette base de données et supprimer le contenu des tableaux suivants - lock - wc_lock Step3 : Nettoyez votre projet Étape 4: Essayez de vous engager maintenant . Étape 5: Terminé.

0
R3ing

Ce type de problème peut survenir lorsque vous supprimez/déplacez des fichiers - en apportant des modifications à la structure de vos répertoires. Subversion vérifie uniquement les modifications apportées aux fichiers déjà ajoutés à Subversion, pas les modifications apportées à la structure de répertoires. Au lieu d'utiliser les commandes copy etc de votre système d'exploitation, utilisez plutôt svn copy etc. Veuillez consulter http://svnbook.red-bean.com/fr/1.7/svn.tour.cycle.html

En outre, lors de la validation des modifications, svn commence par stocker un "résumé" des modifications dans une liste de tâches. Lors de l'exécution des opérations svn dans cette liste de tâches, il verrouille le fichier pour empêcher toute autre modification pendant l'exécution de ces actions svn. Si l'action svn est interrompue à mi-chemin, disons par un crash, le fichier restera verrouillé jusqu'à ce que svn puisse terminer les actions de la liste des tâches. Cela peut être "réactivé" en utilisant la commande svn cleanup. Veuillez consulter http://svnbook.red-bean.com/fr/1.7/svn.tour.cleanup.html

0
Chris