it-swarm.com.de

Status "S" in Subversion

Irgendwann wurden alle Dateien in meiner Arbeitskopie mit dem "S" -Symbol gekennzeichnet (siehe unten):

$ 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

Interessanterweise kommt es nur in dieser bestimmten Arbeitskopie vor - wenn ich das Projekt in ein neues Verzeichnis auschecke, werden die "S" -Markierungen nicht angezeigt.

Wie kann man diese nervigen "S" -Symbole loswerden? Es verringert deutlich die Klarheit des WC-Status.

Update: Ich wechsle von Zeit zu Zeit mit der Standard-svn switch-Syntax. Dieses "S" -Symbol wurde bis vor kurzem nicht angezeigt. Der zum Wechseln verwendete Befehl war:

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

Gibt es eine Möglichkeit, die "S" -Flagge zu löschen?

75

Dies bedeutet, dass sich die Dateien in einem anderen Verzeichnis in Ihrem Subversion-Repository befinden als das Verzeichnis, in dem sie gespeichert sind. Die Lösung besteht darin, die gesamte Arbeitskopie an den gleichen Ort zu verschieben. Weitere Informationen zum Aufrufen des Befehls finden Sie im Subversion-Buch twosection .

73
Andrew Aylett

Wenn Sie "svn info" im Verzeichnis selbst und in (einer) der darin enthaltenen Dateien aufrufen, erhalten Sie zwei verschiedene URLs.

Sie erhalten den Status 'S', wenn die URL einer Datei/eines Verzeichnisses nicht mit der URL des übergeordneten Objekts und dem Namen der Datei übereinstimmt.

Können Sie die URL des übergeordneten Elements und eines der untergeordneten Knoten posten? (ggf. Anonymisierung der URL)

11
Bert Huijben

Ich hatte den Status 'S', als ich vom Trunk (r100) zu einem Zweig (r50) wechselte. Ich habe den Fehler erhalten:

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

Alle Web-Subdirs wurden mit 'S' gekennzeichnet.

Die Ursache: Ich hatte .htaccess to svn gelöscht: ignoriere es (r100) und habe es dann erneut erstellt (unversioniert und ignoriert). Die Niederlassung (r50) hatte im Repo noch web/.htaccess.

Die Lösung :

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

Alles ist gut.

8
sglessard

Ich hatte dieses Problem mit einem Verzeichnis, das ich erfolgreich an SVN übergeben habe. Die Lösung für mich war, es lokal zu löschen und dann zu aktualisieren. Ich konnte keine Unterschiede sehen, aber die .svn-Datei wurde aus irgendeinem Grund behoben (kein S mehr).

6
Eli

Dies wird normalerweise durch eine Unterbrechung beim Wechseln der Zweige verursacht.

Wechseln Sie zu einem anderen Zweig und wechseln Sie dann wieder zu dem Zweig, den Sie wirklich möchten.

svn switch some_other_branch_url

svn switch desired_branch_url

4
ahnbizcad

Nur eine Bemerkung: Ich habe das gleiche S-Symbol erhalten, als ich ein aus demselben Speicherort im Repository gelöschtes Verzeichnis ausgecheckt habe, aber eine andere URL verwendet habe. /[email protected] ... 'gegen' svn checkout --username benutzer https: //scm.gforge .... '. Ich habe es gelöst, indem ich es erneut auscheckte, indem ich dieselbe URL verwendete wie beim ersten Checkout.

4
André Lage

Falls jemand zu spät nach der Antwort sucht (was oben richtig angegeben ist), glaube ich, dass ein wahrscheinlicher Grund für diese Situation ein "svn switch" für ein übergeordnetes Verzeichnis ist, das ausfällt (wie im Fall einer lokalen, nicht festgeschriebenen Datei mit derselbe Name und keine --force - Option), so dass alle Dateien nach dem Fehler "nicht geschaltet" bleiben.

Aus diesem Grund werden (wenn das ursprüngliche Problem später behoben wird) ein erneuter 'svn switch' im selben übergeordneten Verzeichnis tatsächlich die verbleibenden nicht umgeschalteten Dateien in einen neuen Repo-Pfad umschalten.

4
John Kennedy

Das bedeutet, dass Sie von einer Arbeitskopie zu einer anderen gewechselt haben. Sie haben zum Beispiel eine Arbeitskopie ausgecheckt und sie dann ausgetauscht, um sie mit einem Code-Zweig zu vergleichen. Sehen Sie sich das SVN-Buch an, um zu erfahren, wie Sie dies rückgängig machen können.

3
me_and

Es gibt einen anderen Weg, wie dieser Status erreicht werden kann - was hoffentlich jemandem etwas Zeit erspart, ihn aufzuspüren.

Ich habe eine externe Bibliothek in mein SVN-Stammverzeichnis entpackt. Es stellt sich heraus, dass der Autor eines Drittanbieters versehentlich seinen eigenen .svn-Ordner in einen seiner Ordner aufgenommen hat. Dies überschreibt natürlich unseren eigenen, korrekten Subversion-Ordner und hat den gleichen Effekt wie an anderer Stelle auf dieser Seite beschrieben - ein Ordner scheint unerwartet zu einem anderen Zweig gewechselt zu haben.

3
halfer

"Artikel wird umgestellt."

Wenn Sie "svn switch" für Ihre Arbeitskopie verwendet haben, könnte dies erklärt werden?

1
stiank81

In meinem Fall wurden zwei Unterverzeichnisse im Zweig im Trunk gelöscht. Ich habe den Zweig vom Hauptverzeichnis der obersten Ebene gewechselt und bin dann wieder in den Stamm gewechselt. Das Problem mit diesen Unterverzeichnissen ist jetzt im Status S.

Ich habe die Antwort von @ahnbizcad als Richtlinie verwendet. Aus dem übergeordneten Verzeichnis (das sich selbst unter dem Verzeichnis der obersten Ebene befindet) der Unterverzeichnisse:

svn sw <branch_url>

svn sw <trunk_url>

0
Soumya Kanti

Für mich passiert dies, wenn der Befehl "svn switch" unterbrochen wird und um es mit TortoriseSVN zu lösen, klicke ich mit der rechten Maustaste auf die Datei und wähle zurück zum übergeordneten Element

0
Alireza Fattahi

Eine einfache Lösung, um das 'S' bei der Ausgabe zu beseitigen

svn status

gehen Sie einfach in das mit 'S' markierte Verzeichnis und löschen Sie das versteckte Verzeichnis .svn:

rm -rf .svn 

Danach erscheinen die Quellen mit '?' und Sie könnten sie leicht frisch hinzufügen:

svn add path/to/resource

0
Torsten Barthel