web-dev-qa-db-fra.com

Que signifie le symbole de statut Subversion "~"?

Je reçois un symbole tilde quand 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 ni sur l'un des feuilles de triche svn.

Fait intéressant, je n'ai édité que main.m, mais il y a beaucoup de fichiers modifiés. Je ne sais pas pourquoi ce serait. Quelqu'un a des conseils pour travailler avec SVN et XCode? Devrais-je mettre mes fichiers source uniquement sous contrôle de version?

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

109
jergason

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

Alors peut-être qu’il s’agissait à l’origine d’un seul fichier, mais que vous l’aviez changé en un répertoire, ou quelque chose du genre?

88
Chad Birch

Voici ce que j'ai fait:

Si le dossier est Test

  1. mv Test Test1
  2. svn remove Test
  3. mv Test1 Test
34
Tuong Le

De

svn help status

Elément versionné '~' obstrué par un élément d'un type différent

J'ai seulement vu ceci où les permissions de fichier avaient changé et svn n'avait aucun accès d'exécution dessus je crois.

J'espère que cela t'aides.

15
user83632

Le moyen le plus simple de résoudre ce problème consiste à sauvegarder, puis à supprimer le dossier ou le fichier ayant ce statut, puis à exécuter "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. .

12
deadprogrammer
svn delete --keep-local x
svn commit -m "del x"
svn add x
svn commit -m "blah"
11
sancelot

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

En supposant qu'il s'agisse d'un dossier appelé un dossier, vous pouvez résoudre ce problème en exécutant 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.

Et puis, il est temps d'ajouter/supprimer et de valider à nouveau les modifications.

10
elGEoRgE TheKiLLa

En cas de problème similaire, SVN se plaignait d'un verrou. Voici ce que nous avons fait:

  • Sauvegardé les fichiers
  • Suppression du répertoire en question avec rm -r (linux)
  • Ran svn cleanup sur le répertoire
  • Ran svn up --force sur le répertoire
3
M.W. Felker

Je veux simplement dire qu'il s'agit d'un problème fréquemment rencontré lors de l'installation d'extensions dans Joomla. Les extensions sont installées via le CMS et appartiennent à Apache sans écriture de groupe. Généralement, l'étape suivante consiste à ajouter les fichiers au SVN, mais si vous ne modifiez pas les permissions permanentes ni le fichier Sudo, SVN échouera lorsqu'il ne pourra pas écrire le répertoire .svn. Voici la solution facile.

mv foo foo-bak
svn up foo
svn revert foo

# just for good measure. Foo should not show up in the two following commands.
ls | grep foo
svn st | grep foo

mv foo-bak foo
svn add foo
3
Collin James

J'ai souvent eu cela lors de la mise à niveau de modules sous (par exemple) sous Joomla !, Wordpress ou Drupal. Parfois, le répertoire .svn est supprimé par le processus de mise à niveau.

# rename updated directory
mv foo foo.new

# restore the old directory
svn up foo

# merge / update the old directory with new items
# notice that the above command will preserve the obsolete files
# so you should do a diff -r in order to remove them
cp -r foo.new/* foo

# Add files commit, etc
svn add foo/*
svn delete foo/xx
svn commit -m "updated module"
2
Marc Druilhe

Il peut aussi s'agir de liens symboliques sous Windows. Lorsque vous validez un lien symbolique dans SVN, puis extrayez-le sous Windows, les liens sont remplacés par des fichiers normaux et sont également signalés sous la forme ~.

2
zbyszanna
~ versioned item obstructed by some item of a different kind
    Second column: Modifications of a file's or directory's properties
0
Nanhe Kumar