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 ?
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.
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é.
Je l'ai résolu par
Dans mon cas, le problème était dû à la suppression de fichiers .svn.
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.
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'
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.
C'est ce que j'ai fait:
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.
De même, je devais mettre à jour un dossier 'contrib':
Mon cas aussi, le problème était dû aux dossiers supprimés .svn.
Résolu.
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.
J'ai essayé de coller le dossier .svn du sous-dossier dans le dossier racine. Ça marche!!!
@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. ]
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
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.
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.
Aujourd'hui, j'ai trouvé le même problème/FILE_NAME/ is not a working copy
en 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
.
CHECKOUT
de Subversion
à local en tant que nouveau projet.J'espère que cela vous aidera.
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.
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
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.
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.