web-dev-qa-db-fra.com

Méthode SVN 405 non autorisée

J'ai accidentellement supprimé un dossier dans SVN et je 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 la copie du serveur. Je peux effectuer des mises à jour et des validations sans problème sur tout autre fichier ou dossier, mais si j'essaie de créer un dossier du même nom, d'ajouter et de valider, l'erreur suivante s'affiche:

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

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

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

122
roadsunknown

Mon hypothèse est que le dossier que vous essayez d'ajouter existe déjà en SVN. Vous pouvez confirmer en extrayant les fichiers dans un autre dossier et voir si le dossier contient déjà le dossier requis.

170
Shaji

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

Alors, prenez folder1 et faites un folder1Copy:

svn delete folder1
svn add folder1Copy

S'engager et mettre à jour:

svn mv folder1Copy/ folder1/

S'engager à nouveau et c'est corrigé.

56
TuK

Mon dossier "disparu" était libraries/fof.

Si je l'ai supprimé, puis exécuté une mise à jour, il ne s'afficherait pas.

cd libaries
svn up

(Rien ne se passe).

Mais mise à jour avec le nom actuel:

svn update fof

fait le tour et il a été mis à jour. J'ai donc explosé ma copie de travail (archivée manuellement) sur cette copie, puis je l'ai réengagé. La solution la plus simple.

10
Riccardo Zorn

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

Le dossier problématique s'appelle lib et devait être ajouté.

  • D'abord, j'ai annulé l'addition, de sorte que SVN n'y faisait plus attention.
  • Ensuite, je l’ai renommé (en libs, ce n’est pas important) à l’aide du menu contextuel Windows, je l’ai ajouté et j’ai commis avec succès.
  • Finalement, je l'ai renommé en lib en utilisant le menu contextuel de TortoiseSVN (c'est probablement important), puis à nouveau validé.
4
andronikus

J'ai également rencontré ce problème tout à l'heure et l'ai résolu de cette façon. Alors je l'ai enregistré ici, et je souhaite que ce soit utile pour les autres.

Scénario:

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

L'erreur s'est produite.

Solution:

  1. $ mv current_copy copy_back # Renomme la copie de code actuelle
  2. $ svn checkout current_copy # Vérifie à nouveau
  3. $ cp copy_back/current_copy # Restaurez vos modifications
3

J'avais un problème similaire. J'ai fini par l'envoyer en orbite et j'ai perdu mon historique SVN. Mais au moins j'ai fait cette fichue erreur disparaître.

Il s’agit probablement d’une séquence de commandes sous-optimale à exécuter, mais elle doit suivre de près la séquence de commandes que j’ai réellement utilisé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"
3
Brad Knowles

Si tu utilises code.google.com pour héberger votre référentiel Subversion.

Vous savez ci-dessous des 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 Non-members may check out a read-only working copy anonymously over HTTP _ statut. Par conséquent, vous ne pouvez rien commettre ou faire jusqu'à présent.

Tu dois utiliser Project members authenticate over HTTPS to allow committing changes chose.

Ce sera bien maintenant.

1
Huy Tower

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

  1. Copiez le dossier dans un autre endroit.
  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. Voir si le répertoire sur le 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.
0
user3010191

Cela signifie que le dossier/fichier que vous essayez de mettre sur svn existe déjà là-bas. Mon conseil est que, avant de faire quoi que ce soit, cliquez avec le bouton droit de la souris sur le dossier/fichier et cliquez sur repo-browser. Ce faisant, vous pourrez voir tous les fichiers/sous-dossiers, etc. déjà présents sur svn. Si le fichier/dossier requis n'est pas présent sur le svn, il vous suffit de supprimer (après la sauvegarde) le fichier que vous souhaitez ajouter, puis d'exécuter une mise à jour.

0
Kaveesh Kanwal

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

0
saravanabawa