Comment surmontez-vous l'erreur svn 'out of date'?
J'ai essayé de déplacer une structure de répertoire d'un emplacement à un autre dans Subversion, mais j'obtiens une erreur Item '*' is out of date
commit.
J'ai la dernière version vérifiée (pour autant que je sache). svn st -u
n'affiche aucune différence autre que les commandes mv.
30 réponses
Je reçois parfois cela avec TortoiseSVN sur windows. La solution pour moi est de svn update
le 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.
Après avoir essayé toutes les choses évidentes, et quelques-unes des autres suggestions ici, sans aucune chance, une recherche Google a conduit à ce lien (lien ne fonctionne plus) - Subversion dit: votre fichier ou répertoire est probablement obsolète
En un mot, l'astuce est d'aller à la .SVN directory (dans le répertoire qui contient le fichier incriminé), et supprimez le fichier" all-wcprops " .
Travaillé pour moi quand rien d'autre.
Je crois que ce problème vient de la .fichier svn. C'est 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 propre vers le nouvel emplacement et utilisez un ajout et une suppression pour effectuer le déplacement. C'est faire manuellement ce que fait SVN, mais cela pourrait fonctionner.
, j'ai trouvé que cela fonctionne pour moi:
svn update
svn resolved <dir>
svn commit
A essayé de mettre à jour la copie locale, et de rétablir l'élément en question, et a toujours eu l'erreur "obsolète". Cela a fonctionné pour une raison quelconque:
svn update --force /path/to/dir/or/file
J'ai juste eu le même problème dans plusieurs dossiers, et c'est ce que j'ai fait de commettre:
1) dans la perspective" synchroniser L'équipe", faites un clic droit sur le dossier > remplacer et mettre à jour
2) Supprimez à nouveau le dossier
3) S'engager et être heureux
Je vous Remercie. Cela vient de le résoudre pour moi. svn update --force / chemin d'accès au nom de fichier /
Si votre fichier récent dans le répertoire local est le même, il n'y a pas d'invites. Si le fichier est différent, il invite à TF, MF etc... choisir mf (le mien plein) assure que rien n'est écrasé et que je pourrais commettre une fois terminé.
Jay CompuMatter
Je parviens à le résoudre en appuyant sur un bouton de mise à jour
Comme le suggère @Alexander-Klyubin, faites le mouvement dans le dépôt. 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
Supprimez votre fichier ou votre chemin en utilisant avant d'exécuter la commande, faites un bk de vos modifications
sudo rm -r /path/to/dir/
Après :
svn up and commit or delete
Êtes-vous sûr d'avoir vérifié la tête et non une révision inférieure? Aussi, Avez-vous fait une mise à jour pour vous assurer que vous avez la dernière version?
Il y a une discussion à ce sujet sur http://svn.haxx.se/users/archive-2007-01/0170.shtml.
Il y a au moins une autre cause de l'erreur de message "obsolète". Dans mon cas, le problème a été .svn / dir-props qui a été créé en exécutant "SVN propset svn: ignore-F.gitignore ."pour la première fois. Supprimer .svn/dir-accessoires semble être une mauvaise idée et peut entraîner d'autres erreurs, de sorte qu'il peut être préférable d'utiliser "svn propdel" pour nettoyer l'errant "svn propset".
# 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.
Si vous utilisez le pont svn GitHub, c'est probablement parce que quelque chose a changé du côté de github. La solution est simple, il suffit d'exécuter svn switch
, ce qui lui permet de se trouver correctement, puis de mettre à jour et tout fonctionnera. Exécutez simplement ce qui suit à partir de la racine de votre commande
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 vient du blog de Lee Preimesberger
Le déplacez-vous en utilisant svn mv
, ou simplement mv
? Je pense que l'utilisation de mv
peut causer ce problème.
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 commis. Quand j'ai essayé d'ajouter le dossier de ma machine locale, il a toujours jeté l'erreur (SVN move a fait la même chose quand j'ai essayé de renommer le dossier). Donc, je suis revenu, puis j'ai fait un DIRNAME mkdir, ajouté et commis. Ensuite, j'ai ajouté le contenu et commis, et cela a fonctionné.
J'ai reçu aléatoirement 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. Ils existaient toujours sur le système de fichiers cependant. Assurez-vous qu'ils sont supprimés du système de fichiers et réessayez la validation.
Si une fois résolu un problème similaire en vérifiant simplement une nouvelle copie de travail et en remplaçant le .répertoire svn lancer les erreurs de validation avec celui nouvellement extrait. La raison dans mon cas était qu'après une corruption du référentiel et une restauration à partir d'une sauvegarde, la copie de travail pointait vers une révision qui n'existait pas dans le référentiel restauré. Également obtenu l'élément de date" erreurs. La mise à jour de la copie de travail avant la validation n'a pas résolu cela mais a remplacé le .svn comme décrit ci dessus faire.
Je l'ai fait et cela a fonctionné pour moi:
1. Prendre une copie de sauvegarde de votre fichier. 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 > > Get Revision: il remplacera vos modifications locales.
4. Maintenant, fusionnez votre code avec le dernier fichier avec le fichier de sauvegarde (étape # 1).
5. Synchroniser et valider la nouvelle fusion fichier.
Mettez à niveau votre serveur et votre client vers Subversion 1.9.
Si l'erreur out of date
se produit aléatoirement alors qu'elle ne le devrait normalement pas, lorsque vous exécutez commit, elle 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. Voir l'entrée Subversion 1.9 Release Notes correspondante: "erreurs" obsolètes " lors de la validation sur HTTPv1.
L'erreur est parce que vous n'avez pas mis à jour ce fichier particulier, mettez d'abord à jour alors vous seul pouvez valider le fichier.
Essayé tout sauf le changement .svn directement. Rien n'a aidé alors voici ma solution.
Dans Eclipse > Window > Show View > History j'ai vu que le fichier n'est pas à la dernière révision, bien que j'ai fait plusieurs svn "Override & Update" / "Revert" / delete file and checkout.
Donc je suis allé Package Explorer > Clic droit sur Fichier > remplacer par > Latest from Repository .
Un autre regard dans la vue historique a montré que le fichier était maintenant sur la dernière révision.
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 les dossiers de mon dossier trunk checkout et les ai collés dans ma vue Eclipse du dossier release branch checkout. Maintenant, L'Explorateur Windows a été configuré pour ne pas afficher les fichiers "cachés" commençant par".", donc j'étais inconscient de tous les incorrects.les fichiers svn étant collés dans mon dossier de commande de la branche release. Doh!
Ma solution était de souffler les endommagés Eclipse project, vérifiez-le à nouveau, puis copiez les nouveaux fichiers plus soigneusement. J'ai également changé Windows pour afficher les fichiers "cachés".
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 .svn / fichier d'entrées et supprimé la référence de répertoire incriminé.
Dans mon cas, seule la suppression de la version locale et la ré-extraction de la nouvelle copie étaient une solution.
Je viens d'avoir cette erreur. Ce que je recommande est de vérifier d'abord sur votre serveur si le fichier d'origine est là. Parfois, les modifications ne sont pas effectuées dans votre dossier local. Si c'est votre situation, il suffit de supprimer votre dossier et de commander à nouveau.
Pour résoudre, j'avais besoin de restaurer le fichier avec problème, et mettre à jour ma copie de travail, et plus tard j'ai modifié le fichier à nouveau et après ces étapes, l'erreur ne s'est plus produite.
Il suffit de faire svn en ligne de commande ou si vous êtes dans windows, sélectionnez l'option svn update.
- Une fois que cela sera fait, cela vous permettra de faire d'autres actions comme commettre et d'autres.
Je viens de l'obtenir alors que j'essayais de commit
à partir d'un répertoire trunk
. Faire svn update
à partir du répertoire trunk
n'a pas résolu l'erreur; cependant, faire svn update
à partir du répertoire parent (où appartient le répertoire .svn
) 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 à cela "svn: e160024: ressource obsolète; essayez de mettre à jour"): le long de trunk
, Il y avait un répertoire branches
. J'ai tiré un branches/branch-1
dans master
de GitHub. Faire svn update
à partir du répertoire parent (qui est la racine de ma copie de travail) au lieu de trunk
semble avoir fait quelque chose dans branches
en plus de trunk
. Quand j'ai essayé de commit
à nouveau, il n'y avait pas d'erreur.
Cependant, comme je l'ai dit plus haut, c'est un cas parmi beaucoup d'autres.
Side note: contrairement à ce que quelqu'un a suggéré, Je ne crois pas que ce soit une bonne idée de jouer manuellement dans le répertoire .svn
.
"nettoyer" 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.