web-dev-qa-db-fra.com

Erreur SVN - Pas une copie de travail

Récemment, notre serveur svn a été changé et nous avons changé de svn.

Étant donné que la copie de travail contenait une quantité considérable de ressources non versionnées, elle a été verrouillée et nous avons commencé à changer de dossier pour tous les dossiers sous svn, ce qui fonctionne parfaitement.

Mais au plus haut niveau du référentiel, lorsque j'essaie de mettre à jour des fichiers, j'obtiens le svn: copie de travail '.' verrouillé erreur et nettoyage ne aide pas non plus. Lorsque je nettoie, je reçois des erreurs comme celles-ci - svn: 'contenu' n'est pas un répertoire de copie de travail

Un nouveau départ n'est PAS une option. Existe-t-il d'autres moyens de nettoyer et de libérer les verrous et d'interrupteur complètement?

EDIT: Le dernier paragraphe de la réponse de JesperE

Si vous obtenez un "pas une copie de travail" quand faire un "nettoyage svn" récursif mon Je suppose que vous avez un répertoire qui devrait être une copie de travail (c'est-à-dire. le répertoire .svn au niveau supérieur le dit), mais il manque le sien répertoire .svn. Dans ce cas, vous pourrait essayer de simplement enlever/déplacer que répertoire et ensuite faire une mise à jour locale

semble être la solution au problème dans le référentiel. J'ai identifié ces dossiers et ai effectué une nouvelle vérification de ces dossiers spécifiques et wow, les verrous sont libérés lors du nettoyage suivant! Merci beaucoup JesperE !!

Mais, je ne peux toujours pas comprendre l'erreur svn switch qui lit maintenant quelque chose comme,

svn: Le référentiel à 'svn: //repourl/reponame/foldername' a uuid 'm/reponame', mais le WC a 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Des idées ?

208
Vijay Dev

Si vous obtenez une "copie de travail" lors de l'exécution d'un svn cleanup récursif, je suppose que vous avez un répertoire qui devrait être une copie de travail (le répertoire .svn au niveau supérieur l'indique), mais il manque son propre répertoire .svn . Dans ce cas, vous pouvez simplement supprimer/déplacer ce répertoire, puis effectuer une mise à jour locale (c'est-à-dire rm -rf content; svn checkout content).

Si vous obtenez une erreur not a working copy, cela signifie que Subversion ne peut pas trouver un répertoire .svn approprié. Vérifiez s'il existe un répertoire .svn dans contents

La solution idéale est une nouvelle caisse, si possible.

123
JesperE

Je suis entré dans une situation similaire (svn: 'papers' is not a working copy directory) d'une manière différente, alors j'ai pensé poster mon histoire de bataille (simplifiée):

$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied

Oops! réparer les autorisations ... alors:

$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~     papers
$ svn cleanup
svn: 'papers' is not a working copy directory

Et même déplacer papers à l'écart et exécuter svn up (ce qui a fonctionné pour l'OP) n'a pas résolu le problème. Voici ce que j'ai fait:

$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers

Ça a marché.

46
Ken Arnold

Je l'ai résolu par

  1. Copier une sauvegarde des dossiers impactés
  2. SVN annuler les dossiers impactés
  3. Coller les fichiers à partir de la sauvegarde

Dans mon cas, le problème était dû à la suppression de fichiers .svn. 

6
Staffan Lundstrom

Peut-être que vous venez de copier l’arbre du dossier et essayer d’ajouter le plus bas.

SVN
|_
  |
  subfolder1
       |
       subfolder2   (here you get an error)

dans ce cas, vous devez commettre un répertoire au niveau supérieur.

5
Hextler

Solution de contournement: Renommer le répertoire qui n'est pas une "copie de travail" Extraire/mettre à jour/restaurer à nouveau ce répertoire Déplacer les fichiers du répertoire renommé vers le nouveau.

Raison: Vous avez apporté des modifications à certains fichiers dans le répertoire .svn, cela casse la 'copie de travail'

3
abatishchev

Si vous avez créé un fichier dans un nouveau répertoire, utilisez 'svn add newdir' au lieu de 'svn add newdir/newfile' car vous devez ajouter le répertoire. Tous les fichiers du répertoire seront ajoutés par défaut.

2
HenryF

C'est ce que j'ai fait:

  1. renommer le coffre en coffre_
  2. créer une nouvelle malle de dossier
  3. Re-checkout et interrompre le processus après l'extraction de quelques fichiers
  4. Déplacer les fichiers de trunk_ à trunk
  5. Faire svn nettoyage
  6. Ne svn update. Cela mettra à jour le statut des fichiers et tous vos fichiers seront versionnés.
1
Shaunak Sontakke

Je viens de recevoir "pas une copie de travail", et pour moi, la raison en était Automouter sous Unix . Juste un nouveau "cd/chemin/à/work/répertoire" a fait le tour.

1
AlexLa

De même, je devais mettre à jour un dossier 'contrib':

  1. Déplacé l'ancien dossier, 
  2. Copié le nouveau
  3. Copié les dossiers .svn dans chaque nouveau dossier (trois seulement dans mon cas).

Mon cas aussi, le problème était dû aux dossiers supprimés .svn.

Résolu.

1
arieltools

J'ai également rencontré ce problème dans l'opération svn diff, il a été causé par un chemin de fichier incorrect, vous devez ajouter './' pour indiquer le répertoire de fichier actuel.

1
Armstrongya

J'ai essayé de coller le dossier .svn du sous-dossier dans le dossier racine. Ça marche!!!

1
navin

@JesperE mentionne que vous devez changer le uuid. Ce qui suit devrait vous aider à atteindre cet objectif. 

Sur SVN 1.5+, vous pouvez faire svnadmin setuuid; vous pouvez ensuite vérifier qu'il est correctement défini à l'aide de svnlook uuid. Sur les versions antérieures de SVN, le processus est plus difficile. Voir http://chestofbooks.com/computers/revision- control/Subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html

De plus, l'UUID de "m/reponame" semble suspect. Je crois que ce devrait être un nombre hexadécimal comme celui de la copie de travail, alors peut-être que cette action va améliorer tout ça :-)

[À l'origine, j'avais commenté réponse de @ JesperE } _, mais j'ai créé cette réponse pour la rendre plus évidente pour les utilisateurs et plus utile pour Google. J'ai depuis enlevé mes commentaires. ]

0
alastairs

Je viens de rencontrer un cas où le répertoire .svn se trouve sur un serveur nfs sur une autre machine et où le client nfs n'exécutait pas le service de verrouillage de fichier (lockd).

svn: E155007: '/mnt/svnworkdir' is not a working copy

Cela a disparu une fois que lockd a été démarré sur l'hôte client nfs.

Il semble que Subversion puisse générer un meilleur message d'erreur lorsqu'il a des difficultés à verrouiller les fichiers. C'était Subversion 1.10.0

0
Juan

Si nous avions le même problème, Slik 1.6.2 et Tortoise se trouvaient sur la même machine. Tortoise a été mis à jour (et a mis à jour la copie de travail), mais Slik ne l’a pas été, donc Tortoise fonctionne correctement, mais les lignes de commande ont échoué avec les éléments suivants:

svn: '.' n'est pas un répertoire de travail

Supprimer Tortoise et Slik, puis réinstaller Tortoise avec les outils de ligne de commande activés, a résolu le problème pour moi.

0
Twoayem

Récemment, j'utilisais d'autres développeurs Mac J'avais la même situation, le problème était; J'ai d'abord dû taper get chemin du repo vers le terminal mais je ne l'ai pas fait, car cela indique quel est votre nom d'utilisateur et votre mot de passe. 

0
Sam

Aujourd'hui, j'ai trouvé le même problème/FILE_NAME/ is not a working copyen matinée et j'ai passé plus de deux heures à le résoudre. Après longtemps de RND et Google, j'ai trouvé une solution et c'est CHECKOUT.

  1. CHECKOUT de Subversion à local en tant que nouveau projet.
  2. Changer une partie du code dans le fichier Java et COMMIT le projet.
  3. Ça marche pour moi.

J'espère que cela vous aidera.

0
Chintan Khetiya

svn: le référentiel situé dans 'svn: // repourl/reponame/foldername' a l'uuid 'm/reponame', mais le WC a 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Chaque dépôt Subversion a un identifiant unique (uuid). Subversion l'utilise pour s'assurer que le dépôt est en fait le même lorsque vous effectuez des opérations telles que le changement. Vous devriez probablement changer l'uuid sur le serveur pour qu'il soit le même qu'avant.

0
JesperE

pour mac: - prenez la commande du côté serveur et une nouvelle fenêtre s'ouvrira pour sélectionner le répertoire de votre machine locale puis mettre tout votre code dans le dossier sélectionné puis ouvrir le côté local de svn et ajouter et valider le projet 

0
RaviPatidar

Serait-ce une incompatibilité de format de travail? Il a changé entre svn 1.4 et 1.5 et les nouveaux outils convertissent automatiquement le format, mais les anciens ne fonctionnent plus avec la copie convertie.

0
agnul

Vous devez avoir supprimé un fichier SVN - base de votre projet (fichiers en lecture seule). Pour cette raison, vous obtenez cette erreur.

Vérifiez à nouveau un nouveau projet, fusionnez les modifications (le cas échéant) de votre ancien projet SVN avec le nouveau à l'aide de "Winmerge" et validez les modifications dans votre dernière extraction.

0
Samiksha