70 votes

Problème étrange avec Subversion "le Fichier existe déjà" en essayant de recréer un répertoire que l'habitude d'être dans mon référentiel

Donc - j'ai l'habitude d'avoir un répertoire appelé mysql quelques révisions d'années. Je l'ai supprimé, et a décidé de recommencer - mais lorsque j'essaie de créer le nouveau répertoire mysql - je continuer à courir dans 'le Fichier Existe Déjà' erreur:

support:/etc/puppet/modules# mkdir mysql
support:/etc/puppet/modules# svn add mysql/
A         mysql
support:/etc/puppet/modules# svn commit -m " Test"
Adding         modules/mysql
svn: Commit failed (details follow):
svn: File already exists: filesystem '/var/lib/svn/puppet/db', transaction '11-r', path '/trunk/modules/mysql'
support:/etc/puppet/modules# svn delete mysql
svn: Use --force to override this restriction
svn: 'mysql' has local modifications
support:/etc/puppet/modules# svn --force delete mysql
D         mysql

J'ai vu quelques messages d'autres suggèrent de forcer une mise à jour

support:/etc/puppet/modules# svn status
support:/etc/puppet/modules# svn update
At revision 11.
support:/etc/puppet/modules# svn mkdir mysql
A         mysql
support:/etc/puppet/modules# svn commit -m "Test"
Adding         modules/mysql
svn: Commit failed (details follow):
svn: File already exists: filesystem '/var/lib/svn/puppet/db', transaction '11-s', path '/trunk/modules/mysql'

62voto

Simon Points 4467

J'ai eu un problème de ce genre quand j'ai supprimé un dossier (et ses sous-dossiers) et est allé à les recréer à partir de zéro. Vous obtenez cette erreur de suppression manuelle et re-ajout de dossiers (alors que les fichiers semblent faire face OK avec cette).

Après quelques frustrant déconner, j'ai trouvé que j'avais à:
(en utilisant TortoiseSVN sur Windows)

  1. Déplacer contradictoires dossiers de la copie de travail (afin que je ne perde pas mon travail en cours)
  2. Faire un svn update qui a ajouté les anciens fichiers/dossiers dans la copie de travail
  3. svn delete le dossier
  4. commit
  5. Copier le dossier de retour dans sa copie de travail (en veillant à ce que vous supprimez tous les .svn dossiers à l'intérieur)
  6. commit

Malheureusement, il (A) exige que les deux commits, et (B) perd de la révision du fichier de l'histoire, car seules les pistes de retour à la récente re-ajouter (à moins que quelqu'un peut expliquer comment résoudre ce problème). Une solution alternative qui travaille autour de ces 2 questions est de sauter les étapes 3 et 4, le seul problème étant que les vieux/les fichiers inutiles peuvent encore être présents dans votre répertoire. Vous pouvez supprimer manuellement.

Aimerais entendre d'autres idées d'autres pourraient avoir sur cette.

Simon.


[Mise à jour] OK, j'ai eu ce même problème à nouveau, mais le la délinquance le dossier n'était PAS dans le dernier commit, donc un update n'a pas la restaurer. Au lieu de cela, j'ai dû parcourir le dépôt et delete la délinquance dossier. J'ai pu alors add le dossier de retour et commit avec succès.

17voto

Fedir Points 3235

Eu le même problème. Pour le résoudre, mis à jour à partir de svn trunk avec l'option de priorité de fichiers locaux.

svn update path/ --accept=mine-full

Après, Vous pouvez s'engager comme d'habitude. Bien sûr, veillez à l'utiliser.

12voto

Atmocreations Points 3300

déjà eu ce type de problème.

ma solution a été:

supprimer le dossier depuis le svn, mais en garder une copie du dossier quelque part, valider les modifications. dans la sauvegarde-de copier, de supprimer de manière récursive tous les .svn-dossiers qu'il contient. pour cela, vous pouvez l'exécuter

#!/bin/bash

find -name '.svn' | while read directory;
do
    echo $directory;
    rm -rf "$directory";
done;

supprimer le référentiel local et re-découvrez ensemble du projet. ne sais pas si la suppression partielle/checkout sont suffisantes.

ce qui concerne

11voto

gnarf Points 49213

J'ai réussi à le contourner en revenir à la dernière version que j'ai eu l'mysql-répertoire dans le répertoire, puis de supprimer le contenu du répertoire, de mettre le nouveau contenu, et la vérification de l'information nouvelle dans. Même si je suis curieux de savoir si quelqu'un a une meilleure explication de ce que le diable s'y passe.

7voto

user552904 Points 61

C'est un méchant... mystérieux erreur et n'correctif.

mise à jour/revenir/commit n'a PAS de travail dans ma situation. Je n'avais rien fait de bizarre - juste un peu de svn se déplace.

Ce qui A fonctionné pour moi a été:

svn remove offender
svn commit
cd ..
rm -fR parent
svn up parent
cd parent
svn remove offender again
svn commit
copy offender back in (minus .svn dirs)
svn add
svn commit

Bizarre pour dire le moins. Fondamentalement, l' svn remove --force offender ne faisais pas d'enlever complètement pour une raison quelconque. Qui est en quelque sorte ce que le message d'erreur a été dit. Seulement par la suppression de la mère, puis la mise à jour de la mère, l'a fait devenir évident parce que le délinquant est réapparu! svn retrait de délinquant à nouveau, puis éliminée correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X