Méthode SVN 405 non autorisée

122

J'ai accidentellement supprimé un dossier dans SVN et l'ai rajouté immédiatement. J'ai rencontré un problème avec cela et ma solution a fini par supprimer complètement le dossier de ma copie locale ainsi que de la copie du serveur. Je peux faire des mises à jour et des validations sans problème sur n'importe quel autre fichier ou dossier, mais si j'essaie de créer un dossier avec le même nom, d'ajouter et de valider, cela me donne l'erreur suivante:

svn: Le serveur a envoyé une valeur de retour inattendue (méthode 405 non autorisée) en réponse à la requête MKCOL pour '/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical'

J'ai exécuté d'innombrables nettoyages, validations, mises à jour, etc. Rien ne résout le problème. Des idées?

Pour info, je n'ai pas la possibilité de renommer le dossier de niveau supérieur.

routes inconnues
la source
J'ai essayé de faire la même chose en essayant de supprimer un sous-répertoire afin de pouvoir l'ignorer correctement. D'une manière ou d'une autre, cela s'est résolu et je ne sais pas vraiment quelle combinaison arcane des éléments a coïncidé pour permettre cela, alors j'ai écarté ma question. Mon nouveau est: pourquoi n'utilisons-nous pas tous git?
icedwater

Réponses:

170

Je suppose que le dossier que vous essayez d'ajouter existe déjà dans SVN. Vous pouvez confirmer en extrayant les fichiers dans un dossier différent et voir si le coffre a déjà le dossier requis.

Sharjeel Aziz
la source
1
J'ai vérifié cela sur une autre version extraite. Pourquoi ma copie de travail ne serait pas mise à jour avec elle, je ne peux pas déterminer.
Roadsunknown
1
C'était le cas ici aussi, mais j'ai dû extraire le dossier dans un dossier séparé (ou plutôt, je l'ai renommé "foo" et svn up'd et je l'ai récupéré, y compris le dossier "supprimé", malgré mon commit réussi de le supprimer.)
Kalle
1
@Shaji: Je comprends votre cas. Mais comment puis-je encore être commis à cause de cette erreur? Ou il y a de toute façon à faire, dites-moi s'il vous plaît. Merci.
Huy Tower
1
Faites une mise à jour SVN sur le dossier, puis réessayez la validation.
Alex R
C'est une erreur ennuyeuse. J'ai extrait un nouveau référentiel de Github et validé un nouveau dossier. Il montre toujours la même erreur. J'ai essayé votre solution mais cela ne fonctionne pas.
emeraldhieu
56

Le moyen le plus rapide pour moi de résoudre ce problème était de dupliquer le dossier affecté et de le valider avec un autre nom. Alors svn mv duplicateFolder originalFolder. Plutôt facile.

Alors, prenez dossier1 et créez un dossier1Copier:

svn delete folder1
svn add folder1Copy

Engagez et mettez à jour:

svn mv folder1Copy/ folder1/

Engagez-vous à nouveau et c'est corrigé.

TuK
la source
6
Cela a très bien fonctionné pour moi et est beaucoup plus simple que de traiter une deuxième copie de travail.
Justin
Espérons que ce commit & updaten'est pas une ligne de commande littérale ... sous Unix qui essaierait de faire les deux en parallèle.
LarsH
1
Brillant bon monsieur si vous venez à sunnyvale et que vous me trouvez, je vous achèterai du café.
Michael Voznesensky
10

Mon dossier «disparu» était libraries/fof.

Si je le supprimais, puis exécutais une mise à jour, il n'apparaîtrait pas.

cd libaries
svn up

(Rien ne se passe).

Mais mise à jour avec le nom réel:

svn update fof

a fait l'affaire et il a été mis à jour. J'ai donc explosé ma copie de travail (archivée manuellement sur tar) dessus et réengagé. Solution la plus simple.

Riccardo Zorn
la source
D'accord, c'est le plus simple. Faites simplement "svn up [dossier]" au lieu de "svn up".
Dimitris
Cette solution est celle qui a fonctionné pour moi. Je vous remercie.
Miguel Rentes
4

Je viens de corriger cela dans mon propre référentiel. J'utilise TortoiseSVN sous Windows, donc je ne sais pas exactement à quelles commandes cela se traduit sur la ligne de commande, mais voici ce que j'ai fait:

Le dossier problématique est appelé libet il devait être ajouté.

  • J'ai d'abord annulé l'ajout pour que SVN n'y prête plus attention.
  • Ensuite, je l'ai renommé (en libs, pas que ce soit important) en utilisant le menu contextuel de Windows, je l'ai ajouté et je me suis engagé avec succès.
  • Enfin, je l'ai renommé en libutilisant le menu contextuel de TortoiseSVN (c'est probablement important), et je l'ai de nouveau engagé.
Andronikus
la source
3

J'ai également rencontré ce problème tout à l'heure et je l'ai résolu de cette manière. Je l'ai donc enregistré ici, et je souhaite qu'il soit utile à d'autres.

Scénario:

  1. Avant de valider le code, révision: 100
  2. (Quelqu'un d'autre valide le code ... révision augmentée à 199)
  3. J'ai (oublié d'exécuter "svn up",) je valide le code, maintenant ma révision: 200
  4. Je lance "svn up".

L'erreur s'est produite.

Solution:

  1. $ mv current_copy copy_back # Renommer la copie de code actuelle
  2. $ svn checkout current_copy # Vérifiez à nouveau
  3. $ cp copy_back / current_copy # Restaurez vos modifications
Siwei Shen 申思维
la source
3

J'avais un problème similaire. J'ai fini par le détruire de l'orbite et j'ai perdu mon historique SVN dans le processus. Mais au moins, j'ai fait disparaître cette foutue erreur.

Il s'agit probablement d'une séquence sous-optimale de commandes à exécuter, mais elle devrait suivre assez étroitement la séquence de commandes que j'ai réellement exécutée pour que les choses fonctionnent:

cp -rp target ~/other/location/target-20111108
svn rm target --force
cp -rp ~/other/location/target-20111108 target-other-name
cd target-other-name
find . -name .svn -print | xargs rm -rf
cd ..
svn add target-other-name
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
svn mv target-other-name target
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
Brad Knowles
la source
C'est le seul moyen d'en être sûr.
TomDestry
1

Si vous utilisez code.google.compour héberger votre référentiel Subversion.

Vous savez ci-dessous les choses, non?

If you plan to make changes, use this command to check out the code as yourself using HTTPS:

# Project members authenticate over HTTPS to allow committing changes.
svn checkout https://.../svn/trunk/ user-...

When prompted, enter your generated googlecode.com password.
Use this command to anonymously check out the latest project source code:

# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://.../svn/trunk/ ...-read-only

L'erreur que vous avez mentionnée exactement vous utilisez le Non-members may check out a read-only working copy anonymously over HTTPstatut. Par conséquent, vous ne pouvez pas commettre ou faire quoi que ce soit pour le moment.

Vous devez utiliser une Project members authenticate over HTTPS to allow committing changeschose.

Ça ira bien maintenant.

Tour Huy
la source
0

J'ai rencontré le même problème et j'ai pu le résoudre en:

  1. Copiez le dossier dans un autre emplacement.
  2. Supprimer .svn du dossier copié
  3. Faites un clic droit sur le dossier d'origine et sélectionnez 'SVN Checkout'
  4. Si vous ne trouvez pas (3), votre cas est différent du mien.
  5. Vérifiez si le répertoire du REPO-BROWSER est correct. Pour mon cas, c'était la cause.
  6. Check-out
  7. Récupérez les fichiers du dossier copié dans le répertoire d'origine.
  8. Commettre.
awan.soekamto
la source
0

Cela signifie que le dossier / fichier que vous essayez de mettre sur svn existe déjà. Mon conseil est qu'avant de faire quoi que ce soit, faites un clic droit sur le dossier / fichier et cliquez sur repo-browser. En faisant cela, vous pourrez voir tous les fichiers / sous-dossiers, etc. qui sont déjà présents sur svn. Si le fichier / dossier requis n'est pas présent sur le svn, supprimez simplement (après avoir effectué une sauvegarde) le fichier que vous souhaitez ajouter, puis exécutez une mise à jour.

Kaveesh Kanwal
la source
0

Le répertoire actuellement ajouté est déjà validé dans le référentiel. Supprimez donc le répertoire dans le référentiel et validez à nouveau le même répertoire.

Saravanabawa
la source
0

J'ai eu cette erreur parce que j'ai remplacé l'adresse URL par une nouvelle se terminant par "/". Je veux dire enregistrer dans la base de données wc.db dans le dossier .svn dans la table REPOSITORY .

Lorsque j'ai supprimé le signe: "/", l'erreur a disparu.

Bronek
la source