113 votes

Que signifie le symbole d'état de Subversion "~" ?

J'obtiens un symbole tilde lorsque je fais un svn status .

Voici la sortie du projet après l'avoir édité dans XCode.

svn status
M      build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree
M      build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header
M      build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols
~      build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings
M      main.m
//more changed files

Une idée de ce que cela signifie ? Je n'arrive pas à le trouver sur Google ou sur l'un des aide-mémoire svn.

Il est intéressant de noter que je n'ai modifié que main.m, mais qu'il y a beaucoup de fichiers modifiés. Je ne sais pas pourquoi. Quelqu'un a-t-il des conseils pour travailler avec SVN et XCode ? Devrais-je seulement mettre mes fichiers sources sous contrôle de version ?

Edit : Causé par le remplacement d'un fichier qui était déjà sous contrôle de version par un fichier d'un autre type. Dans ce cas, strings.pbxstrings était un fichier et est devenu un répertoire. La morale de l'histoire est de ne pas mettre votre dossier de construction sous contrôle de version.

0 votes

Hmm, je ne suis pas sûr qu'il y ait un moyen de le "réparer", par opposition à la simple réinsertion. Vous pourriez poster une autre question demandant s'il y a un bon moyen de résoudre ce statut, vous obtiendriez plus d'attention (puisque la question actuelle a déjà reçu une réponse).

88voto

Chad Birch Points 39087

Le site Livre SVN dit :

L'élément est versionné comme un type d'objet (fichier, répertoire, lien), mais a été remplacé par un autre type d'objet.

Peut-être s'agissait-il à l'origine d'un fichier unique, mais vous l'avez transformé en répertoire, ou quelque chose de ce genre ?

1 votes

Il semble que vous ayez raison. Il s'agit maintenant d'un répertoire sans fichier .svn. Une idée sur la façon de réparer cela ? Dois-je le supprimer de subversion et le rajouter à nouveau ?

0 votes

Vous n'auriez pas trouvé un moyen de résoudre ce problème ?

0 votes

@Phill - J'ai fini par détruire le dépôt... soupir

34voto

Tuong Le Points 905

Voici ce que j'ai fait :

Si le dossier est Test

  1. mv Test Test1
  2. svn remove Test
  3. mv Test1 Test

5 votes

Cela a fonctionné pour moi tant que je me suis engagé entre le retrait et l'ajout. 1. mv Test Test1 2. svn remove Test 3. svn commit -m "Suppression du test" 4. mv Test1 Test 5. svn add Test 6. svn commit -m "Ajout du test".

1 votes

La réponse de @sancelot est bien meilleure ; vous n'avez pas besoin de renommer si vous utilisez svn delete --keep-local fileName .

15voto

Phil Carter Points 3176

De

svn help status

Un élément versionné '~' est obstrué par un élément d'un autre type.

Je n'ai vu cela que lorsque les permissions du fichier avaient changé et que svn n'avait pas d'accès d'exécution sur celui-ci, je crois.

J'espère que cela vous aidera.

12voto

deadprogrammer Points 4521

Le moyen le plus simple de résoudre ce problème est de sauvegarder, puis de supprimer le dossier ou le fichier qui a cet état et ensuite de faire "svn up" : ce n'est pas nécessairement un dossier remplacé par un fichier, il se peut simplement que le dossier .svn soit manquant ou corrompu.

10voto

elGEoRgE TheKiLLa Points 470

Cela peut se produire lorsque vous supprimez le dossier .svn d'un dossier (par exemple lorsque vous supprimez un répertoire, puis que vous recréez le même répertoire), ou lorsque vous remplacez un répertoire par un lien symbolique, ou un fichier portant le même nom.

Supposons qu'il s'agisse d'un dossier appelé a-folder, vous pouvez résoudre ce problème en lançant les commandes suivantes dans le dossier parent :

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf
$ svn up --force .
svn: Directory 'logs/.svn' containing working copy admin area is missing
$ svn up --force .
E    a-folder
...
Updated to revision n.

Ensuite, il suffit d'ajouter/supprimer les modifications dans svn et de les valider à nouveau.

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