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?

Mike
la source

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...)

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

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

gbjbaanb
la source
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"
jose
la source
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.

Totoro
la source
0

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

Behzad Sedighzadeh
la source
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.

Howard
la source