SVN (Subversion) Problem "Datei soll hinzugefügt werden, fehlt aber" - Verwenden von Versionen

94

Ich verwende Versionen für SVN.

Ich versuche, diese Nachricht zu bestätigen und zu erhalten:

Commit fehlgeschlagen (Details folgen): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' soll hinzugefügt werden, fehlt jedoch

Ich nehme an, das liegt daran, dass ich dem Repo Dateien hinzugefügt und diese dann über das Dateisystem gelöscht habe.

Ich möchte, dass es einfach meine Änderung notiert und die Änderung auf das Repo anwendet.

Wie kann ich das umgehen?

Mike
quelle

Antworten:

120

Ich bin mir nicht sicher, was Sie versuchen: Wenn Sie die Datei über hinzugefügt haben

svn add myfile

Sie haben svn nur angewiesen, diese Datei beim nächsten Commit in Ihr Repository zu stellen . Es gibt keine Änderung am Repository, bevor Sie eine eingeben

svn commit

Wenn Sie die Datei vor dem Festschreiben löschen, svnhaben Sie sie in ihren Datensätzen (weil Sie sie hinzugefügt haben), können sie jedoch nicht an das Repository senden, da die Datei nicht mehr vorhanden ist.

Entweder möchten Sie die Datei im Repository speichern und dann aus Ihrer Arbeitskopie löschen: Versuchen Sie in diesem Fall, Ihre Datei zurückzubekommen (aus dem Papierkorb?), Führen Sie das Commit durch und löschen Sie die Datei anschließend über

svn delete myfile
svn commit

Wenn Sie das rückgängig machen addund die Datei einfach wegwerfen möchten , können Sie zu einem

svn revert myfile

svnDies weist (in diesem Fall) an, die Add-Operation rückgängig zu machen.

BEARBEITEN

Leider war mir nicht bewusst, dass Sie den GUI-Client "Versionen" für Max OSX verwenden. Versuchen Sie also entweder, das enthaltene Verzeichnis über die GUI wiederherzustellen, oder springen Sie ins kalte Wasser und starten Sie Ihre versteckte Mac-Befehlsshell :-) (es heißt "Terminal" in der deutschen OSX, keine Ahnung, wie man es auf Englisch aufruft Ausführung...)

MartinStettner
quelle
2
Das Problem hierbei ist, dass er eine GUI verwendet. Wenn er die Befehlszeile trotzdem verwenden kann, kann er nur svn rmdie Datei verwenden, auch wenn sie nicht im Verzeichnis vorhanden ist.
Pikrass
Ok, mir war der Client "Versions" für OSX nicht bekannt. Er sollte sowieso in der Lage sein, "Zurücksetzen" zu verwenden, oder? Das würde mit TortoiseSVN unter Windows funktionieren.
MartinStettner
svn bereinigungen und svn rms später ... Danke für eure hilfe jungs. Gibt es eine Möglichkeit, svn mitzuteilen: "Schauen Sie, ich habe einige Dateien über den Standard-Dateimanager meines Betriebssystems hinzugefügt, und im Moment möchte ich, dass der aktuelle Status dieses Repos so ist ... jetzt lassen Sie es passiert ... sag mir nicht, was ich mit diesen Dateien machen kann und was nicht, aber ja, behalte alles für mich im Auge. "?
Mike
1
A svn add *fügt automatisch alle neuen, nicht versionierten Dateien hinzu und svn commitspeichert diese Änderungen sofort im Repository. Afaik gibt es keine äquivalente Operation zum Entfernen. Wenn Sie also Dateien entfernen, müssen Sie svn rmmanuell aufrufen .
MartinStettner
Nur zu Ihrer Information, ich hatte auch dieses Problem und svn rmauch mit --forcefunktioniert es nicht - heißt es does not exist. Also svn revertist hier das Richtige zu tun.
Michel Müller
24

Ich hatte das gleiche Problem mit Versionen, die dieselbe Nachricht anzeigen. Ich habe einfach mit der rechten Maustaste auf die fehlerhaften Dateien geklickt und im Kontextmenü die Option "Zurücksetzen ..." ausgewählt, und alles war gut.

Grundsätzlich glaubt Versions (eigentlich Subversion), dass Sie die Datei noch hinzufügen möchten, sie kann sie jedoch nicht finden, da Sie sie im Dateisystem gelöscht haben. Die Option Zurücksetzen weist Subversion an, das Hinzufügen zu vergessen.

mmopy
quelle
Ich habe diesen Fehler erhalten, weil ich einen Ordner aus der App-Hierarchie gelöscht habe. Ich habe gerade einen leeren Ordner mit dem gleichen Namen hinzugefügt und es hat funktioniert.
Yogi
10

Das Hinzufügen und anschließende Löschen einer Datei wird als Fehler angesehen - und SVN sagt es Ihnen. Sie haben ihm gesagt, dass er einige Dateidaten erwarten und diese dann nicht bereitstellen soll, wenn Sie ein Commit durchführen. Die roten Lichter blinken und die Sirenen gehen aus!

Die Antwort besteht darin, das Hinzufügen rückgängig zu machen, die Datei alternativ festzuschreiben und sie dann mit 'svn rm' aus dem Dateisystem und dem Repo zu entfernen.

gbjbaanb
quelle
Ich bekomme dies von Xcode, wo ich eine Datei hinzufüge und es falsch gemacht habe oder so und Xcode anweise zu löschen (in den Papierkorb verschieben). Leider lässt Xcode es in diesem Zustand und macht das rm von svn nicht für mich, obwohl es die Datei löscht ...
chadbag
3

Dies löste mein ähnliches Problem. Ich habe es verwendet, um die Änderungen zurückzusetzen, dann habe ich alles hinzugefügt und Änderungen im Terminal mit festgeschrieben

svn add folder_path/*
svn commit -m "message"
Jose
quelle
2

Vermeiden Sie die Verwendung von Xcode zum Umbenennen von Dateien in einer Ordnerreferenz. Wenn Sie eine Datei mit Xcode umbenennen, wird sie zum Festschreiben markiert. Wenn Sie es später vor dem Festschreiben löschen, wird dieser Fehler angezeigt.

Totoro
quelle
0

Ich habe gerade die Datei aus VS gelöscht und dann aus dem 'Repository Explorer' die Datei in die Arbeitskopie kopiert.

Behzad Sedighzadeh
quelle
0

Wenn Sie TortoiseSVN verwenden…

In Ihrem Festschreibungsfenster im Abschnitt "Änderungen vorgenommen" können Sie alle fehlerhaften Dateien auswählen, dann mit der rechten Maustaste klicken und Löschen auswählen. Wenn Sie das Festschreiben beenden, werden die Dateien aus den geplanten Ergänzungen entfernt.

Howard
quelle