web-dev-qa-db-fra.com

Statut "S" dans Subversion

À un moment donné, tous les fichiers de ma copie de travail ont été marqués du symbole "S", comme indiqué ci-dessous:

$ svn st
M    S   AclController.php
     S   InstallationController.php
     S   CustomerController.php
     S   RedirController.php
     S   IndexController.php
     S   LoginController.php
     S   OrderController.php
     S   ProductController.php
     S   SelfInstallController.php
     S   SelfcareController.php

Fait intéressant, cela ne se produit que dans cette copie de travail particulière - lorsque je récupère le projet dans un nouveau répertoire, les marques "S" ne sont pas affichées.

Comment se débarrasser de ces symboles "S" ennuyeux? Cela diminue considérablement la clarté de l'état de la Coupe du monde.

Mise à jour: Je change de temps en temps en utilisant la syntaxe standard svn switch. Cela n'a jamais causé l'apparition de ce symbole "S" jusqu'à récemment. La commande utilisée pour basculer était:

svn switch svn+ssh://xxxxxx/Subversion/xxxxxxx/releases/1.0.16 .

Existe-t-il un moyen de supprimer le drapeau "S"?

75
Michał Rudnicki

Cela signifie que les fichiers proviennent d'un autre emplacement dans votre référentiel Subversion que le répertoire qui les contient. La solution consiste à basculer l'intégralité de la copie de travail au même endroit. Voir les sections two du livre Subversion pour plus de détails sur la procédure à suivre pour appeler la commande.

73
Andrew Aylett

Si vous appelez 'svn info' sur le répertoire lui-même et sur l'un des fichiers à l'intérieur, vous obtiendrez deux URL différentes.

Vous obtenez le statut «S» si l'URL d'un fichier/répertoire ne correspond pas à l'URL du parent, suivie du nom du fichier.

Pouvez-vous publier l'URL du parent et l'un des nœuds enfants? (anonymiser l'URL le cas échéant)

11
Bert Huijben

J'avais l'état 'S' lors du passage du tronc (r100) à une branche (r50). J'ai eu l'erreur:

svn: Failed to add file 'web/.htaccess': an unversioned file of the same name already exists

Tous les sous-répertoires de web/ont été marqués 'S'.

La cause: j'avais supprimé .htaccess à svn: ignore le (r100), puis je l'avais créé à nouveau (sans version et ignoré). La branche (r50) avait toujours web/.htaccess dans le dépôt.

La solution :

mv web/.htaccess ../../
svn switch back to trunk
svn switch to branch again

Tout va bien.

8
sglessard

J'ai eu ce problème avec un répertoire que j'ai commis avec succès à SVN. La solution pour moi était de l’effacer localement puis de le mettre à jour. Je ne voyais aucune différence, mais le fichier .svn était corrigé pour une raison quelconque (pas plus de S).

6
Eli

Cela est généralement dû à une interruption lors du changement de branche.

Basculez vers une autre branche, puis revenez à la branche de votre choix.

svn switch some_other_branch_url

svn switch desired_branch_url

4
ahnbizcad

Juste une remarque: j'ai le même symbole S lorsque j'ai extrait un répertoire supprimé de au même emplacement dans le référentiel, mais en utilisant une URL différente, c'est-à-dire en utilisant des protocoles distincts pour effectuer le paiement, comme 'svn checkout svn + ssh://[email protected] ... 'contre' svn checkout --username user https: //scm.gforge .... '. Je l'ai résolu en l'extrayant à nouveau en utilisant la même URL que celle utilisée lors de la première extraction.

4
André Lage

Si quelqu'un cherche tardivement la réponse (ce qui est indiqué correctement ci-dessus), je pense qu'une des causes probables de cette situation est un "commutateur svn" sur un répertoire parent qui échoue (comme dans le cas d'un fichier local non signé avec même nom, et pas d’option --force), laissant tous les fichiers suivants après l’échec «non-commuté».

C’est pourquoi (en supposant que le problème initial soit corrigé ultérieurement), un 'svn switch' ultérieur dans le même répertoire parent basculera les fichiers non basculés restants vers un nouveau chemin de dépôt.

4
John Kennedy

Cela signifie que vous avez basculé d'une copie de travail à une autre, par exemple, vous avez extrait une copie de travail, puis l'avez remplacée par une branche de code. Jetez un coup d’œil au livre SVN pour savoir comment annuler cela.

3
me_and

Ce statut peut être atteint d'une autre manière - ce qui, espérons-le, fera gagner du temps à quelqu'un pour le retrouver.

J'ai décompressé une bibliothèque externe dans ma racine SVN et il est apparu que l'auteur tiers avait accidentellement inclus son propre dossier .svn dans l'un de ses dossiers. Ceci écrase évidemment notre propre dossier Subversion correct et a le même effet que décrit ailleurs sur cette page: un dossier semble avoir basculé de manière inattendue vers une autre branche.

3
halfer

"L'élément est commuté."

Si vous avez utilisé "svn switch" sur votre copie de travail, cela pourrait expliquer cela?

1
stiank81

Dans mon cas, deux sous-répertoires de la branche ont été supprimés du coffre. Je suis passé de la branche au répertoire principal, puis je suis retourné dans le coffre et le problème avec ces sous-répertoires a maintenant le statut S.

J'ai utilisé la réponse de @ ahnbizcad comme ligne directrice. Depuis le répertoire parent (qui est lui-même sous le répertoire de niveau supérieur) des sous-répertoires:

svn sw <branch_url>

svn sw <trunk_url>

0
Soumya Kanti

Pour moi, cela se produit lorsque la commande "svn switch" est interrompue et pour le résoudre avec TortoriseSVN, je fais un clic droit sur le fichier et sélectionne retourne au parent

0
Alireza Fattahi

Une solution simple pour vous débarrasser du "S" lorsque vous publiez

svn status

est juste aller dans le répertoire qui est marqué avec 'S' et supprimer le répertoire caché .svn:

rm -rf .svn 

Ensuite, les sources apparaissent avec un '?' et vous pouvez facilement les ajouter fraîchement:

svn add path/to/resource

0
Torsten Barthel