SVN (Subversion) Problème «L'ajout du fichier est prévu, mais il est manquant» - Utilisation des versions


94

J'utilise des versions pour SVN.

J'essaye de m'engager et de recevoir ce message:

La validation a échoué (les détails suivent): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' est prévu pour l'ajout, mais il est manquant

Je suppose que c'est parce que j'ai ajouté des fichiers au dépôt, puis les ai supprimés via le système de fichiers.

J'aimerais qu'il prenne simplement note de ma modification et l'applique au repo.

Comment puis-je contourner cela?

Réponses:


120

Je ne sais pas ce que vous essayez de faire: si vous avez ajouté le fichier via

svn add myfile

vous avez seulement dit à svn de mettre ce fichier dans votre référentiel lors de votre prochaine validation . Il n'y a pas de changement dans le référentiel avant de saisir un

svn commit

Si vous supprimez le fichier avant la validation, l' svnavez dans ses enregistrements (parce que vous l'avez ajouté) mais ne pouvez pas l'envoyer au référentiel car le fichier n'existe plus.

Donc soit vous voulez sauvegarder le fichier dans le référentiel puis le supprimer de votre copie de travail: dans ce cas essayez de récupérer votre fichier (de la corbeille?), Faites le commit et supprimez le fichier par la suite via

svn delete myfile
svn commit

Si vous souhaitez annuler addet simplement jeter le fichier, vous pouvez

svn revert myfile

qui indique svn(dans ce cas) d'annuler l'opération d'ajout.

ÉDITER

Désolé, je ne savais pas que vous utilisiez le client GUI "Versions" pour Max OSX. Alors essayez de revenir sur le répertoire contenant en utilisant l'interface graphique ou sautez dans l'eau froide et lancez votre shell de commande Mac caché :-) (il s'appelle "Terminal" dans l'OSX allemand, aucune idée de comment le faire apparaître en anglais version...)


2
Le problème ici est qu'il utilise une interface graphique. S'il peut de toute façon utiliser la ligne de commande, il pourrait simplement utiliser le svn rmfichier même s'il n'existe pas dans le répertoire.
Pikrass

Ok, je n'étais pas au courant du client "Versions" pour OSX. Il devrait pouvoir utiliser "revenir" de toute façon, n'est-ce pas? Cela fonctionnerait avec TortoiseSVN sous Windows.
MartinStettner

svn cleanups et svn rms plus tard ... Merci pour votre aide les gars. Existe-t-il un moyen de dire à svn, "regardez, j'ai ajouté des fichiers via le gestionnaire de fichiers par défaut de mon système d'exploitation, et pour le moment, le contenu de ce dossier est ce que je veux que l'état actuel de ce dépôt soit ... maintenant laissez-le ne me dites pas ce que je peux et ne peux pas faire avec ces fichiers, mais oui, gardez une trace de tout cela pour moi. "?
Mike

1
Un svn add *ajoute automatiquement tous les nouveaux fichiers non versionnés, et svn commitenregistre immédiatement ces modifications dans le référentiel. Afaik il n'y a pas d'opération équivalente pour la suppression, donc si vous supprimez des fichiers, vous devez appeler svn rmmanuellement.
MartinStettner

Juste pour info, j'ai aussi eu ce problème et svn rm, même avec --forcene fonctionne pas - il dit does not exist. C'est donc svn revertla bonne chose à faire ici.
Michel Müller

24

J'ai eu le même problème avec les versions affichant le même message. J'ai simplement fait un clic droit sur les fichiers incriminés et sélectionné «Revert ...» dans le menu contextuel et tout était bon.

Fondamentalement, Versions (en fait Subversion) pense que vous voulez toujours ajouter le fichier, mais il ne peut pas le trouver car vous l'avez supprimé dans le système de fichiers. L'option Revert indique à Subversion d'oublier de l'ajouter.


J'obtenais cette erreur car j'avais supprimé un dossier de la hiérarchie des applications. Je viens d'ajouter un dossier vide avec le même nom et cela a fonctionné.
Yogi

10

Ajouter un fichier, puis le supprimer est le type d'opération qui est considéré comme une erreur - et donc SVN vous le dit. Vous lui avez dit d'attendre des données de fichier et de ne pas les fournir lorsque vous vous engagez, les voyants rouges clignotent et les sirènes se déclenchent!

La réponse est d'annuler votre ajout, ou de valider le fichier, puis d'utiliser «svn rm» pour le supprimer du système de fichiers et du dépôt.


Je reçois cela de Xcode où j'ajoute un fichier et je l'ai mal fait ou quelque chose et dis à Xcode de supprimer (déplacer vers la corbeille). Malheureusement, Xcode le laisse dans cet état et ne fait pas le rm de svn pour moi bien qu'il supprime le fichier ...
chadbag

3

Cela a résolu mon problème similaire. Je l'ai utilisé pour annuler les modifications, puis j'ai tout ajouté et commis des modifications dans le terminal avec

svn add folder_path/*
svn commit -m "message"

2

Évitez d'utiliser Xcode pour renommer des fichiers dans une référence de dossier. Si vous renommez un fichier en utilisant Xcode, il sera marqué pour validation. Si vous le supprimez plus tard avant la validation, vous vous retrouverez avec cette erreur.


0

Je viens de supprimer le fichier de VS, puis de «Repository Explorer», j'ai copié le fichier dans la copie de travail.


0

Si vous utilisez TortoiseSVN…

Depuis votre fenêtre de validation dans la section «Modifications apportées», vous pouvez sélectionner tous les fichiers incriminés, puis cliquer avec le bouton droit et sélectionner Supprimer. Terminez la validation et les fichiers seront supprimés des ajouts planifiés.

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.