SVN: Ordner bereits unter Versionskontrolle, aber nicht festgeschrieben?

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 statsagt, es ist nicht unter Versionskontrolle, also versuche ich es hinzuzufügen, und dann sagt es mir, dass es ist. Wenn ich eine mache svn ci, wird sie nicht festgelegt und wird nicht angezeigt, wenn ich versuche, online zum Repository zu navigieren.

Wie bringe ich es dazu, mich zu verpflichten?

mpen
quelle
3
Enthält der Ordner "Autocomplete" ein defektes Unterverzeichnis ".svn"? Hast du auch aufgeräumt? :)
bzlm
1
Haben Sie eine: svn-Bereinigung versucht, nur einen Stich in die Dunkelheit?
Shaunhusain
Ich bin auf dieses Problem gestoßen, als ich ein eingechecktes Verzeichnis in einen anderen Ordner in meinem Projekt kopiert hatte. Das Löschen der alten .svn funktioniert!
Paulrehkugler
Ich habe die Dateien zwangsweise hinzugefügt: svn add --force /path/to/fileoder wenn Sie das Verzeichnis rekursiv hinzufügen möchten : svn add --depth infinity --force /path/to/directory.
Joker

Antworten:

162

Kopieren Sie den problematischen Ordner in ein Sicherungsverzeichnis und entfernen Sie ihn aus Ihrem SVN-Arbeitsverzeichnis. Denken Sie daran, alle .svnversteckten Verzeichnisse aus dem kopierten Ordner zu löschen .

Aktualisieren Sie jetzt Ihr Projekt, bereinigen Sie und schreiben Sie fest, was noch übrig ist. Verschieben Sie nun Ihren Ordner zurück in das Arbeitsverzeichnis, fügen Sie ihn hinzu und schreiben Sie ihn fest. Die meiste Zeit funktioniert diese Problemumgehung, es scheint, dass SVN im Grunde verwirrt war ...

Update: Zitatkommentar von @Mark :

Ich musste den Ordner nicht verschieben, nur den .svnOrdner löschen und dann svn-Hinzufügen funktionierte.

Tomasz Nurkiewicz
quelle
52
Ich musste den Ordner nicht verschieben, nur den .svnOrdner löschen und dann svn-Hinzufügen funktionierte.
Mpen
6
+1 für meinen Tag ;-) Wie Mark sagte, war es für mich genug, die .svn-Verzeichnisse im problematischen Ordner zu entfernen.
rturrado
23
Vielen Dank, dass Sie SVN als vollständige BS identifiziert haben.
Steve K
1
Jetzt, wo Sie nur .svn im obersten Ordner haben, können Sie diese BS nicht tun. Wenn Metadaten
beschädigt
Deaktivieren Sie den übergeordneten Ordner (Apps / Autocomplete) aus der Liste, falls bereits festgeschrieben
khaled_webdev
20

Ich hatte ein ähnlich aussehendes Problem, nachdem ich einen Verzeichnisbaum hinzugefügt hatte, der .svn-Verzeichnisse enthielt (da es sich in seiner Quellumgebung um ein svn: external handelte): Der svn-Status sagte mir "?", Aber beim Versuch, es hinzuzufügen, war es "bereits" unter Versionskontrolle ".

Da keine anderen versionierten Verzeichnisse vorhanden waren, habe ich dies getan

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

die falschen .svn-Verzeichnisse zu entfernen; Danach konnte ich das neue Verzeichnis hinzufügen.

Hinweis :

  • Wenn andere versionierte Verzeichnisse enthalten sind, muss der Suchausdruck geändert werden, um genauer zu sein
  • Wenn Sie sich nicht sicher sind, lassen Sie zuerst den Teil "-exec ..." weg, um zu sehen, was gelöscht werden würde
Tobias
quelle
Während diese Antwort für mich funktionierte, befand ich mich beim ersten Mal im falschen Ordner und brachte die Dinge ziemlich durcheinander. Scheint ein guter Ort zu sein, um die Leute daran zu erinnern, "zweimal zu messen, einmal zu schneiden", dh die Details zu überprüfen, bevor Sie diese ausführen.
BishopZ
Ich empfehle das "Wenn Sie sich nicht sicher sind", ... -exec echo {} \;damit Ihr -exec-Schalter auch gut funktioniert.
FlipMcF
empfehlen auch -type d, dem Fund ein hinzuzufügen . Rufen Sie mich wählerisch an, bis Sie rm -rfetwas zu weit gehen. Anders als meine Nitpicks - ich denke, das ist die richtige Antwort.
FlipMcF
15

Eine Variation der Antwort von @ gauss256 , das Löschen .svn, hat bei mir funktioniert:

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

Vor Gauß 'Lösung habe ich den Ansatz von @ jwir3 ausprobiert und keine Freude gehabt :

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit
Kochfelder
quelle
14

(1) Das ist mir gerade passiert und ich fand es interessant, wie es passiert ist. Grundsätzlich hatte ich den Ordner an einen neuen Speicherort kopiert und geändert, wobei ich vergessen hatte, dass er alle versteckten .svn-Verzeichnisse mit sich bringen würde. Sobald Sie erkennen, wie es passiert, ist es in Zukunft einfacher zu vermeiden.

(2) Das Entfernen der .svn-Verzeichnisse ist die Lösung, aber Sie müssen dies rekursiv im gesamten Verzeichnisbaum tun. Der einfachste Weg, dies zu tun, ist:

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

Haben Sie versucht, eine SVN-Bereinigung durchzuführen?

jwir3
quelle
2
Ich bin auch auf dieses Problem gestoßen. Dann versuchte es svn cleanupund es half nicht.
Imacake
3

Suchen Sie nach einem Verzeichnis 'apps / autocomplete / .svn'. Bewegen Sie es an einen sicheren Ort (falls Sie es wiederherstellen müssen, weil dies nicht funktioniert hat) und prüfen Sie, ob das Problem dadurch behoben wird.

Jerryb
quelle
0

Ich habe eine Lösung gefunden, falls Sie Eclipse (Luna) mit dem SVN-Client JavaHL (JNI) 1.8.13 und Tortoise installiert haben :

Open Eclipse: Versuchen Sie zunächst, das Projekt- / Maven-Modul zur Versionskontrolle hinzuzufügen (Projekt -> Kontextmenü -> Team -> Zur Versionskontrolle hinzufügen).

Die folgende Eclipse-Fehlermeldung wird angezeigt:

org.apache.subversion.javahl.ClientException: Eintrag existiert bereits svn: 'PathToYouProject' steht bereits unter Versionskontrolle

Danach müssen Sie Ihr Arbeitsbereichsverzeichnis in Ihrem Explorer öffnen, Ihr Projekt auswählen und über Tortoise auflösen (Projekt -> Kontextmenü -> TortoiseSVN -> Auflösen).

Sie sehen den folgenden Meldungsdialog: " Dateiliste ist leer "

Drücken Sie auf Abbrechen und aktualisieren Sie das Projekt in Eclipse. Ihr Projekt sollte wieder unter Versionskontrolle stehen.

Leider ist es nicht möglich, mehrere Projekte gleichzeitig aufzulösen. Sie müssen nichts löschen, aber je nach Größe Ihres Projekts kann es etwas mühsam sein.

Chisey88
quelle
0

Für mich hat ein SVN-Update gefolgt von einem SVN-Commit funktioniert. In dem Ordner, der nicht hinzugefügt werden konnte, waren keine .svn-Ordner vorhanden.

Sujeet
quelle