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.

Tim Visher
la source
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.

Michael
la source
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.

Tom Bushell
la source
Ç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.

Jim Deville
la source
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
Per Löwgren
la source
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
Stu Thompson
la source
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

Rafael Xavier
la source
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

Geai
la source
5

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

Alvin567
la source
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

Temps infini
la source
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 
Clameur
la source
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 .

jgreep
la source
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.

Alexandre
la source
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.
infogizmo
la source
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

Perkins
la source
1

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

Ryan Bigg
la source
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é.

Mélisse
la source
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.

Tonnelle
la source
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.

fileunderwater
la source
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é.

Sameer Patel
la source
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 .

bahrep
la source
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.

pantalon abhishek
la source
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.

katana0815
la source
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.

Binara Medawatta
la source
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".

Jim Ferrans
la source
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.

Al W
la source
0

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

Macilias
la source
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.

brunch875
la source
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.

sandolkakos
la source
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.
Tu es incroyable
la source
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.

Hibou57
la source