Comment surmonter l'erreur svn «obsolète»?


337

J'ai essayé de déplacer une structure de répertoires d'un emplacement à un autre dans Subversion, mais j'obtiens une Item '*' is out of dateerreur de validation.

J'ai vérifié la dernière version (pour autant que je sache). svn st -une révèle aucune différence autre que les commandes mv.


11
avez-vous essayé svn up?
Sklivvz

3
un problème trivial-evoider est: si vous supprimez un dossier et son contenu, supprimez uniquement le contenu en premier, svn, puis supprimez le dossier, puis svn à nouveau.
Fattie

Réponses:


637

J'obtiens parfois ceci avec TortoiseSVN sur Windows. La solution pour moi est svn updatele répertoire, même s'il n'y a pas de révisions à télécharger ou à mettre à jour. Il fait quelque chose aux métadonnées, ce qui le corrige comme par magie.


4
J'ai changé la propriété svn: ignore d'un dossier et j'ai commencé à obtenir l'erreur obsolète. Mais comme vous l'avez dit, la mise à jour a fonctionné.
Sushant

4
Lorsque j'essaie de mettre à jour ce répertoire, j'obtiens "svn: Deux rapports de niveau supérieur sans cible" Une raison de plus de détester SVN. Avec git, je n'ai jamais eu ce type de problème stupide avec les opérations de base comme le déplacement d'un répertoire.
Dan Dascalescu

J'ai eu une erreur «obsolète» sur mon dossier parent à l'aide de l'interface graphique des versions. J'ai mis à jour le dossier parent, puis je me suis engagé sans erreur.
milesmeow

1
cela a également été causé par la modification de svn: ignore pour moi et la mise à jour svn l'a corrigé. Merci!
Nathan Schwermann

8
Dans Subclipse, utilisez "Team -> Update to HEAD". Fonctionne bien avec moi.
NeoRamza

42

Après avoir essayé toutes les choses évidentes, et certaines des autres suggestions ici, sans aucune chance, une recherche Google a conduit à ce lien (le lien ne fonctionne plus) - Subversion dit: Votre fichier ou répertoire est probablement obsolète

En résumé, l'astuce consiste à aller dans le répertoire .svn (dans le répertoire qui contient le fichier incriminé) et à supprimer le fichier "all-wcprops" .

A fonctionné pour moi quand rien d'autre n'a fait.


Ça y est! Merci! Quelqu'un a-t-il des suggestions sur la façon dont cela se produit et comment l'éviter en premier lieu?
Jesse Barnum

A travaillé pour moi. J'ai fini par devoir supprimer tous les fichiers 'all-wcprops': find. -name all-wcprops -exec rm -rf {} \;
Peter Hough

Je suppose que vous devriez être en mesure de résoudre ce par des outils svn et options, sans supprimer les fichiers dans la structure
augusto

+1, c'est la seule chose qui a fonctionné pour moi. L'autre solution ne l'a pas fait.
Clayton Dukes

9
ne fonctionne pas pour moi, il n'y a aucun all-wcpropsfichier dans le .svrépertoire
ulkas

39

Je crois que ce problème vient du fichier .svn. C'est soit incorrect dans l'ancien parent, le nouveau parent ou l'ancien. J'essaierais de revenir à votre point de départ. Utilisez une exportation pour obtenir une copie propre du dossier. Déplacez la copie vierge vers le nouvel emplacement et utilisez un ajout et une suppression pour effectuer le déplacement. C'est ce que fait SVN manuellement, mais cela pourrait fonctionner.


4
Subversion copie, puis supprime, ce qui est assez différent de la suppression et de l'ajout ici.
SnakE

37

J'ai trouvé que cela fonctionne pour moi:

svn update
svn resolved <dir>
svn commit

Travaillé pour moi sans le faire svn updateauparavant, j'avais un scénario où je voulais éviter la mise à jour. (donc je viens de résoudre et de valider et cela a fonctionné)
BornToCode

cela a été LE remède à ma situation, rien d'autre n'a fonctionné. Merci!
texasdave

14

J'ai essayé de mettre à jour la copie locale et de rétablir l'élément en question, et j'ai toujours l'erreur "obsolète". Cela a fonctionné pour une raison quelconque:

svn update --force /path/to/dir/or/file

11

Je viens d'avoir le même problème dans plusieurs dossiers et voici ce que j'ai fait pour valider:

1) Dans la perspective "Team Synchronize", faites un clic droit sur le dossier> Remplacer et mettre à jour
2) Supprimez à nouveau le dossier
3) Validez et soyez heureux


5

Je vous remercie. Cela vient de le résoudre pour moi. mise à jour svn --force / chemin vers le nom de fichier /

Si votre fichier récent dans le répertoire local est le même, il n'y a pas d'invite. Si le fichier est différent, il demande tf, mf etc ... le choix de mf (le mien est plein) assure que rien n'est écrasé et je pourrais valider une fois terminé.

Jay CompuMatter


5

J'arrive à le résoudre en appuyant sur un bouton de mise à jour


4

Comme @ Alexander-Klyubin le suggère, faites le déplacement dans le référentiel. Cela va également être beaucoup plus rapide, surtout si vous avez une grande quantité de données à déplacer, car vous n'aurez plus à transférer toutes ces données sur le réseau.

svn mv https://username@server/svn/old/ https://username@server/svn/new/

devrait fonctionner très bien


J'avais ce problème avec une svn up; svn mvsérie de commandes, et cela a bien fait l'affaire. Je vous remercie.
DopeGhoti

3

Supprimez votre fichier ou votre chemin en utilisant avant d'exécuter la commande faire un bk de vos modifications

sudo rm -r /path/to/dir/

après :

svn up and commit or delete 

2

Êtes-vous sûr d'avoir vérifié la tête et non une révision inférieure? De plus, avez-vous effectué une mise à jour pour vous assurer que vous disposez de la dernière version?

Il y a une discussion à ce sujet sur http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Disons que vous voulez archiver une ancienne copie? Quelle est alors la manière la plus simple de faire fonctionner l'enregistrement?
OJW

Si vous parlez de revenir à une ancienne copie, enregistrez-la comme d'habitude. Il obtiendra un nouveau numéro de révision.
jgreep

2

Effectuez le déplacement directement dans le référentiel.


2

Il existe au moins une autre cause de l'erreur de message "obsolète". Dans mon cas, le problème était .svn / dir-props qui a été créé en exécutant "svn propset svn: ignore -F .gitignore". pour la première fois. La suppression de .svn / dir-props semble être une mauvaise idée et peut provoquer d'autres erreurs, il est donc préférable d'utiliser "svn propdel" pour nettoyer le "svn propset" errant.

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

Si vous utilisez le pont github svn, c'est probablement parce que quelque chose a changé du côté github. La solution est simple, il suffit d'exécuter svn switch, ce qui lui permet de se retrouver correctement, puis de se mettre à jour et tout fonctionnera. Exécutez simplement ce qui suit à partir de la racine de votre paiement

svn info | grep Relative 
svn switch path_from_previous_command
svn update

ou

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

La base de cette solution provient du blog de Lee Preimesberger


1

Le déplacez-vous en utilisant svn mv, ou tout simplement mv? Je pense que l'utilisation mvpeut provoquer ce problème.


1

J'ai déplacé le répertoire sur ma machine locale pour le garder en sécurité, puis svn a supprimé le répertoire stupide, puis s'est engagé. Lorsque j'ai essayé d'ajouter le dossier à partir de ma machine locale, cela a quand même généré l'erreur (le déplacement SVN a fait la même chose lorsque j'ai essayé de renommer le dossier). Alors je suis revenu, puis j'ai fait un mkdir DIRNAME, ajouté et commis. Ensuite, j'ai ajouté le contenu et je me suis engagé, et cela a fonctionné.


1
J'éviterais de changer le contenu du référentiel (svn delete), simplement parce que ma caisse locale est en quelque sorte corrompue.
Lars Noschinski

1

J'ai reçu au hasard cette erreur après avoir supprimé quelques répertoires contenant chacun des fichiers. J'ai supprimé les répertoires via Netbeans et j'ai réalisé qu'il ne les supprimait pas réellement. Il semblait simplement supprimer tout ce qui se trouvait dans les répertoires et supprimer la référence au répertoire dans Netbeans. Cependant, ils existaient toujours sur le système de fichiers. Assurez-vous qu'ils sont supprimés du système de fichiers et réessayez la validation.


1

Si une fois résolu un problème similaire, il suffit d'extraire une nouvelle copie de travail et de remplacer le répertoire .svn en lançant les erreurs de validation par celui-ci nouvellement extrait. La raison dans mon cas était qu'après une corruption et une restauration du référentiel à partir d'une sauvegarde, la copie de travail pointait vers une révision qui n'existait pas dans le référentiel restauré. A également obtenu des erreurs «article obsolète». La mise à jour de la copie de travail avant la validation n'a pas résolu le problème, mais le remplacement du .svn comme décrit ci-dessus l'a fait.


1

Je l'ai fait et cela a fonctionné pour moi:
1. Faites une sauvegarde de votre dossier. Vous pouvez simplement copier votre code dans un fichier texte.
2. Cliquez avec le bouton droit sur le fichier que vous souhaitez valider >> Équipe >> Afficher l'historique. 3. Dans le panneau "Afficher l'historique", vous verrez toutes les révisions de ce fichier. Faites un clic droit sur la dernière révision du fichier >> Obtenir la révision: elle remplacera vos modifications locales.
4. Maintenant, fusionnez votre code avec le dernier fichier avec le fichier de sauvegarde (étape n ° 1).
5. Synchronisez et validez le fichier nouvellement fusionné.


1

Mettez à niveau votre serveur et votre client vers Subversion 1.9.

Si la out of date erreur se produit de manière aléatoire alors qu'elle ne devrait normalement pas, lorsque vous exécutez la validation, cela peut indiquer que vous utilisez un client ou un serveur Subversion 1.7 obsolète et non pris en charge ou plus ancien.

Vous devez mettre à niveau le serveur et les clients afin de résoudre le problème. Reportez-vous à l'entrée correspondante des notes de publication de Subversion 1.9: Erreurs «obsolètes» lors de la validation via HTTPv1 .


1
Cela m'est même arrivé avec TortoiseSVN 1.8.8 sous Windows. La mise à jour vers la version 1.9 a aidé.
Martin Pecka

1

L'erreur est parce que vous n'avez pas mis à jour ce fichier particulier, mettez d'abord à jour puis vous seul pouvez valider le fichier.


1

Essayé tout sauf changer directement en .svn. Rien n'a aidé alors voici ma solution.

Dans Eclipse> Fenêtre> Afficher la vue> Historique, j'ai vu que le fichier n'était pas à la dernière révision, bien que j'aie fait plusieurs svn "Override & Update" / "Revert" / delete file et checkout.

Je suis donc allé à l'Explorateur de packages> Clic droit sur le fichier> Remplacer par> Dernier du référentiel .

Un autre regard dans la vue Historique a montré que le fichier était maintenant sur la dernière révision.


1

"Clean Up" Il vous mettra sur la bonne voie.

Faites un clic droit sur le dossier svn et cliquez sur «Nettoyer», faites-le si vous obtenez cette erreur.


0

Cela s'est produit lorsque j'ai mis à jour une branche d'une version antérieure avec des fichiers du tronc. J'ai utilisé l'Explorateur Windows pour copier des dossiers de mon dossier d'extraction de tronc et les ai collés dans ma vue Eclipse du dossier d'extraction de la branche de publication. Maintenant, l'Explorateur Windows a été configuré pour ne pas afficher les fichiers «cachés» commençant par «. Ah!

Ma solution a été de supprimer le projet Eclipse endommagé, de le vérifier à nouveau, puis de copier les nouveaux fichiers plus soigneusement. J'ai également changé Windows pour afficher les fichiers "cachés".


0

j'ai eu cette erreur en essayant de valider certains fichiers, seulement c'était un fichier / dossier qui n'existait pas dans ma copie de travail. Je ne voulais vraiment pas passer par les tracas de déplacer les fichiers et de revérifier, à la fin, j'ai fini par éditer le fichier .svn / entries et supprimé la référence de répertoire incriminée.


0

Dans mon cas, seule la suppression de la version locale et le retrait de la nouvelle copie étaient une solution.


0

Je viens de recevoir cette erreur. Ce que je recommande, c'est de vérifier d'abord sur votre serveur si le fichier d'origine s'y trouve. Parfois, les modifications ne sont pas apportées dans votre dossier local. Si tel est votre cas, supprimez simplement votre dossier et passez à nouveau en caisse.


0

Pour résoudre, je devais rétablir le fichier avec problème et mettre à jour ma copie de travail, et plus tard j'ai à nouveau modifié le fichier et après ces étapes, l'erreur ne s'est plus produite.


0

Faites juste svn en ligne de commande ou si vous êtes dans Windows, sélectionnez l'option de mise à jour svn.

  • Une fois que cela sera fait, cela vous permettra de prendre des mesures supplémentaires comme s'engager et d'autres.

0

Je viens de recevoir ceci pendant que j'essayais de commitpartir d'un trunkrépertoire. Faire à svn updatepartir du trunkrépertoire n'a pas résolu l'erreur; cependant, faire à svn updatepartir du répertoire parent (où le .svnrépertoire appartient) a résolu l'erreur.

Ma conjecture sur ce qui s'est passé (un cas d'utilisation entre autres, il peut y avoir plusieurs raisons à cette «svn: E160024: ressource obsolète; essayez de mettre à jour»): en plus trunk, il y avait un branchesrépertoire. J'ai tiré un branches/branch-1dans masterde GitHub. Faire à svn updatepartir du répertoire parent (c'est-à-dire la racine de ma copie de travail) au lieu de trunksemble avoir fait quelque chose branchesen plus de trunk. Quand j'ai essayé decommit nouveau, il n'y a pas eu d'erreur.

Cependant, comme je l'ai dit plus haut, il s'agit d'un cas parmi bien d'autres.

Note latérale: contrairement à ce que quelqu'un a suggéré, je ne pense pas que ce soit une bonne idée de jouer manuellement dans le .svnrépertoire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.