SVN: Dossier déjà sous contrôle de version mais non conforme?

111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn statdit que ce n'est pas sous contrôle de version, alors j'essaie de l'ajouter, puis il me dit que c'est le cas. Lorsque je fais un svn ci, il n'est pas engagé et n'apparaît pas lorsque j'essaye de parcourir le référentiel en ligne.

Comment le faire s'engager?

mpen
la source
3
Le dossier "autocomplete" contient-il un sous-répertoire ".svn" cassé? Aussi, avez-vous nettoyé? :)
bzlm
1
Avez-vous essayé un nettoyage: svn, juste un coup de couteau dans le noir?
shaunhusain
J'ai rencontré ce problème lorsque j'avais copié un répertoire archivé dans un autre dossier de mon projet. La suppression de l'ancien .svn fonctionne!
paulrehkugler
Je force ajouté les fichiers: svn add --force /path/to/file, ou si vous souhaitez ajouter le répertoire récursive: svn add --depth infinity --force /path/to/directory.
joker

Réponses:

162

Copiez le dossier problématique dans un répertoire de sauvegarde et supprimez-le de votre répertoire de travail SVN. N'oubliez pas de supprimer tous les .svnrépertoires cachés du dossier copié.

Maintenant, mettez à jour votre projet, nettoyez et validez ce qui reste. Maintenant, déplacez votre dossier vers le répertoire de travail, ajoutez-le et validez. La plupart du temps, cette solution de contournement fonctionne, il semble que SVN soit fondamentalement confus ...

Mise à jour: citant le commentaire de @Mark :

Pas besoin de déplacer le dossier, il suffit de supprimer le .svndossier, puis de l'ajouter en svn.

Tomasz Nurkiewicz
la source
52
Pas besoin de déplacer le dossier, il suffit de supprimer le .svndossier, puis de l'ajouter en svn.
mpen
6
+1 pour faire ma journée ;-) Comme Mark l'a dit, pour moi, il suffisait de supprimer les répertoires .svn dans le dossier problématique.
rturrado
23
Merci d'avoir identifié SVN comme BS absolu.
Steve K
1
maintenant que vous n'avez que .svn dans le dossier supérieur, vous ne pouvez pas faire ce BS, si les métadonnées sont corrompues, vous êtes grillé
Kalpesh Soni
décochez le dossier parent (apps / autocomplete) de la liste s'il est déjà
validé
20

J'ai eu un problème similaire après avoir ajouté une arborescence de répertoires contenant des répertoires .svn (car il s'agissait d'un svn: external dans son environnement source): svn status m'a dit "?", Mais en essayant de l'ajouter, c'était déjà " sous contrôle de version ".

Puisqu'aucun autre répertoire versionné n'était présent, j'ai fait

find . -mindepth 2 -name '.svn' -exec rm -rf '{}' \;

pour supprimer les mauvais répertoires .svn; après cela, j'ai pu ajouter le nouveau répertoire.

Remarque :

  • Si d'autres répertoires versionnés sont contenus, l'expression de recherche doit être modifiée pour être plus spécifique
  • En cas de doute, omettez d'abord la partie "-exec ..." pour voir ce qui serait supprimé
Tobias
la source
Bien que cette réponse ait fonctionné pour moi, la première fois que je l'ai utilisée, j'étais dans le mauvais dossier et j'ai mis les choses en désordre. Cela semble être un bon endroit pour rappeler aux gens de "mesurer deux fois, couper une fois", c'est-à-dire vérifier les détails avant d'exécuter celui-ci.
BishopZ
Je recommande le «en cas de doute» pour ... -exec echo {} \;que vous puissiez également faire fonctionner votre commutateur -exec correctement.
FlipMcF
recommande également d'ajouter un -type dà la recherche. Appelez-moi pointilleux jusqu'à ce que vous rm -rfalliez un peu trop loin. Autre que mes pinaillages - je pense que c'est la bonne réponse.
FlipMcF
15

Une variante de la réponse de @ gauss256 , la suppression .svn, a fonctionné pour moi:

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

Avant la solution de Gauss, j'ai essayé l'approche de @ jwir3 et je n'ai eu aucune joie:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit
plaques de cuisson
la source
14

(1) Cela m'est arrivé, et j'ai trouvé intéressant comment cela s'était passé. Fondamentalement, j'avais copié le dossier dans un nouvel emplacement et l'ai modifié, oubliant qu'il apporterait tous les répertoires .svn cachés. Une fois que vous réalisez comment cela se produit, il est plus facile d'éviter à l'avenir.

(2) La suppression des répertoires .svn est la solution, mais vous devez le faire de manière récursive tout au long de l'arborescence des répertoires. Le moyen le plus simple de le faire est:

find troublesome_folder -name .svn -exec rm -rf {} \;
gauss256
la source
3

Avez-vous essayé d'effectuer un nettoyage svn?

jwir3
la source
2
J'ai aussi rencontré ce problème. Ensuite, j'ai essayé svn cleanupet cela ne l'a pas aidé.
imacake
3

Recherchez un répertoire «apps / autocomplete / .svn». Déplacez-le dans un endroit sûr (au cas où vous auriez besoin de le restaurer car cela n'a pas fonctionné) et voyez si cela résout le problème.

jerryb
la source
0

J'ai trouvé une solution au cas où vous auriez installé Eclipse (Luna) avec le SVN Client JavaHL (JNI) 1.8.13 et Tortoise :

Ouvrez Eclipse: essayez d'abord d'ajouter le module project / maven au contrôle de version (Projet -> Menu contextuel -> Équipe -> Ajouter au contrôle de version)

Vous verrez le message d'erreur Eclipse suivant:

org.apache.subversion.javahl.ClientException: l'entrée existe déjà svn: 'PathToYouProject' est déjà sous contrôle de version

Après cela, vous devez ouvrir le répertoire de votre espace de travail dans votre explorateur, sélectionner votre projet et le résoudre via Tortoise (Projet -> Menu contextuel -> TortoiseSVN -> Résoudre)

Vous verrez la boîte de dialogue de message suivante: "La liste des fichiers est vide "

Appuyez sur Annuler et actualisez le projet dans Eclipse. Votre projet doit être à nouveau sous contrôle de version.

Malheureusement, il n'est pas possible de résoudre plus d'un projet à la fois ... vous n'avez rien à supprimer mais selon la taille de votre projet, cela peut être un peu laborieux.

Chisey88
la source
0

Pour moi, faire une mise à jour svn, suivie de svn commit a fonctionné. Il n'y avait aucun dossier .svn présent dans le dossier dont l'ajout a échoué.

Sujeet
la source