Wie überwinden Sie den svn-Fehler "veraltet"?


336

Ich habe versucht, eine Verzeichnisstruktur in Subversion von einem Speicherort an einen anderen zu verschieben, erhalte jedoch einen Item '*' is out of dateFestschreibungsfehler.

Ich habe die neueste Version ausgecheckt (soweit ich das beurteilen kann). svn st -uEs werden keine anderen Unterschiede als die mv-Befehle angezeigt.


11
hast du svn ausprobiert
Sklivvz

3
Ein trivialer Problemvermeider ist: Wenn Sie einen Ordner und Inhalte löschen, löschen Sie zuerst nur den Inhalt, svn, dann den Ordner und dann svn erneut.
Fattie

Antworten:


636

Ich bekomme das manchmal mit TortoiseSVN unter Windows. Die Lösung für mich ist svn updatedas Verzeichnis, obwohl es keine Revisionen zum Herunterladen oder Aktualisieren gibt. Es hat etwas mit den Metadaten zu tun, wodurch es auf magische Weise repariert wird.


4
Ich habe die Eigenschaft svn: ignore eines Ordners geändert und den Fehler "Veraltet" angezeigt. Aber wie Sie sagten, funktionierte es nur, es zu aktualisieren.
Sushant

4
Wenn ich versuche, dieses Verzeichnis zu aktualisieren, erhalte ich "svn: Zwei Berichte der obersten Ebene ohne Ziel". Ein weiterer Grund, SVN zu hassen. Mit git hatte ich nie ein derart dummes Problem mit grundlegenden Operationen wie dem Verschieben eines Verzeichnisses.
Dan Dascalescu

Ich hatte einen veralteten Fehler in meinem übergeordneten Ordner über die Versions-GUI. Ich habe den übergeordneten Ordner aktualisiert und dann fehlerfrei festgeschrieben.
Meilen

1
Dies wurde auch durch das Ändern von svn verursacht: Ignorieren für mich und svn Update behoben. Vielen Dank!
Nathan Schwermann

8
Verwenden Sie in Subclipse "Team -> Auf HEAD aktualisieren". Funktioniert gut mit mir.
NeoRamza

42

Nachdem Sie alle offensichtlichen Dinge und einige der anderen Vorschläge hier ohne jegliches Glück ausprobiert hatten, führte eine Google-Suche zu diesem Link (Link funktioniert nicht mehr) - Subversion sagt: Ihre Datei oder Ihr Verzeichnis ist wahrscheinlich veraltet

Kurz gesagt, der Trick besteht darin, in das Verzeichnis .svn (in dem Verzeichnis, das die fehlerhafte Datei enthält) zu wechseln und die Datei "all-wcprops" zu löschen .

Arbeitete für mich, als nichts anderes tat.


Das hat es geschafft! Vielen Dank! Hat jemand Vorschläge, wie dies geschieht und wie man es überhaupt vermeiden kann?
Jesse Barnum

Hat für mich gearbeitet. Am Ende musste ich alle 'all-wcprops'-Dateien entfernen: find. -name all-wcprops -exec rm -rf {} \;
Peter Hough

Ich denke, Sie sollten in der Lage sein, dies durch SVN-Tools und
-Optionen

+1, das ist das einzige, was für mich funktioniert hat. Die andere Lösung tat es nicht.
Clayton Dukes

9
Ich arbeite nicht für mich, es gibt keine all-wcpropsDateien im .svVerzeichnis
ulkas

39

Ich glaube, dieses Problem kommt von der .svn-Datei. Es ist entweder falsch im alten Elternteil, im neuen Elternteil oder im alten. Ich würde versuchen, zu Ihrem Ausgangspunkt zurückzukehren. Verwenden Sie einen Export, um eine saubere Kopie des Ordners zu erhalten. Verschieben Sie die saubere Kopie an den neuen Speicherort und verwenden Sie Hinzufügen und Löschen, um die Verschiebung durchzuführen. Das macht manuell, was SVN macht, aber es könnte funktionieren.


4
Subversion kopiert und löscht tatsächlich, was sich vom Löschen und Hinzufügen hier unterscheidet.
SnakE

37

Ich habe festgestellt, dass dies für mich funktioniert:

svn update
svn resolved <dir>
svn commit

svn updateIch habe für mich gearbeitet, ohne es vorher zu tun . Ich hatte ein Szenario, in dem ich Updates vermeiden wollte. (
Also habe

Dies war das Heilmittel für meine Situation, sonst hat nichts funktioniert. Vielen Dank!
Texasdave

14

Es wurde versucht, die lokale Kopie zu aktualisieren und das betreffende Element zurückzusetzen, und es wurde weiterhin der Fehler "Veraltet" angezeigt. Dies funktionierte aus irgendeinem Grund:

svn update --force /path/to/dir/or/file

11

Ich hatte gerade das gleiche Problem in mehreren Ordnern und dies ist, was ich getan habe, um zu begehen:

1) Klicken Sie in der Perspektive "Team Synchronize" mit der rechten Maustaste auf den Ordner> Override and Update.
2) Löschen Sie den Ordner erneut.
3) Commit and be happy


5

Vielen Dank. Das hat es gerade für mich gelöst. svn update --force / pfad zum dateinamen /

Wenn Ihre zuletzt verwendete Datei im lokalen Verzeichnis identisch ist, werden keine Eingabeaufforderungen angezeigt. Wenn die Datei anders ist, werden Sie zur Eingabe von tf, mf usw. aufgefordert. Wenn Sie mf (meine voll) auswählen, wird sichergestellt, dass nichts überschrieben wird und ich mich verpflichten kann, wenn Sie fertig sind.

Jay CompuMatter


5

Ich schaffe es, es zu lösen, indem ich einen Update-Button drücke


4

Wie @ Alexander-Klyubin vorschlägt, machen Sie den Umzug im Repository. Es wird auch viel schneller, insbesondere wenn Sie eine große Datenmenge verschieben müssen, da Sie nicht alle diese Daten erneut über das Netzwerk übertragen müssen.

svn mv https://username@server/svn/old/ https://username@server/svn/new/

sollte gut funktionieren


Ich hatte dieses Problem mit einer svn up; svn mvBefehlsserie, und das hat den Trick gut gemacht. Vielen Dank.
DopeGhoti

3

Entfernen Sie Ihre Datei oder Ihren Pfad, indem Sie vor dem Ausführen des Befehls einen Teil Ihrer Änderungen ausführen

sudo rm -r /path/to/dir/

nach :

svn up and commit or delete 

2

Sind Sie sicher, dass Sie den Kopf überprüft haben und keine niedrigere Revision? Haben Sie auch ein Update durchgeführt, um sicherzustellen, dass Sie die neueste Version haben?

Es gibt eine Diskussion darüber am http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Angenommen, Sie möchten eine alte Kopie einchecken? Was ist dann der einfachste Weg, um das Einchecken zum Laufen zu bringen?
ABl.

Wenn Sie über das Zurücksetzen auf eine alte Kopie sprechen, checken Sie diese wie gewohnt ein. Es wird eine neue Revisionsnummer erhalten.
Jgreep


2

Es gibt mindestens eine weitere Ursache für den Fehler "Veraltet". In meinem Fall war das Problem .svn / dir-props, das durch Ausführen von "svn propset svn: ignore -F .gitignore" erstellt wurde. zum ersten Mal. Das Löschen von .svn / dir-Requisiten scheint eine schlechte Idee zu sein und kann andere Fehler verursachen. Daher ist es möglicherweise am besten, "svn propdel" zu verwenden, um das fehlerhafte "svn propset" zu bereinigen.

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

Wenn Sie die Github-SVN-Brücke verwenden, liegt dies wahrscheinlich daran, dass sich auf Githubs Seite etwas geändert hat. Die Lösung ist einfach, Sie müssen nur ausführen svn switch, damit es sich selbst richtig findet, dann aktualisieren und alles wird funktionieren. Führen Sie einfach Folgendes aus dem Stammverzeichnis Ihrer Kasse aus

svn info | grep Relative 
svn switch path_from_previous_command
svn update

oder

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

Die Basis für diese Lösung stammt aus Lee Preimesbergers Blog


1

Bewegen Sie es mit svn mvoder nur mv? Ich denke, die Verwendung von just mvkann dieses Problem verursachen.


1

Ich habe das Verzeichnis zur sicheren Aufbewahrung auf meinen lokalen Computer verschoben, dann hat svn das dumme Verzeichnis gelöscht und dann festgeschrieben. Als ich versuchte, den Ordner von meinem lokalen Computer hinzuzufügen, wurde immer noch der Fehler ausgegeben (SVN Move hat dasselbe getan, als ich versucht habe, den Ordner umzubenennen). Also bin ich zurückgekehrt, dann habe ich einen mkdir DIRNAME gemacht, hinzugefügt und festgeschrieben. Dann habe ich den Inhalt hinzugefügt und festgeschrieben, und es hat funktioniert.


1
Ich würde es vermeiden, den Repository-Inhalt zu ändern (svn delete), nur weil mein lokaler Checkout irgendwie beschädigt ist.
Lars Noschinski

1

Ich habe diesen Fehler zufällig erhalten, nachdem ich einige Verzeichnisse gelöscht hatte, die jeweils einige Dateien enthielten. Ich habe die Verzeichnisse über Netbeans gelöscht und festgestellt, dass sie nicht tatsächlich gelöscht wurden. Es schien einfach alles in den Verzeichnissen zu löschen und den Verweis auf das Verzeichnis in Netbeans zu entfernen. Sie waren jedoch noch im Dateisystem vorhanden. Stellen Sie sicher, dass sie aus dem Dateisystem gelöscht wurden, und wiederholen Sie das Festschreiben.


1

Wenn Sie ein ähnliches Problem einmal gelöst haben, indem Sie einfach eine neue Arbeitskopie auschecken und das .svn-Verzeichnis ersetzen, das die Festschreibungsfehler auslöst, durch dieses neu ausgecheckte. Der Grund in meinem Fall war, dass nach einer Beschädigung des Repositorys und einer Wiederherstellung aus einer Sicherung die Arbeitskopie auf eine Revision zeigte, die im wiederhergestellten Repository nicht vorhanden war. Habe auch "Artikel veraltet" Fehler. Das Aktualisieren der Arbeitskopie vor dem Festschreiben hat dies nicht gelöst, aber das Ersetzen der .svn wie oben beschrieben.


1

Ich habe dies getan und es hat bei mir funktioniert:
1. Erstellen Sie eine Sicherungskopie Ihrer Datei. Sie können Ihren Code einfach in eine Textdatei kopieren.
2. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie festschreiben möchten >> Team >> Verlauf anzeigen. 3. Im Bereich "Verlauf anzeigen" sehen Sie alle Revisionen dieser Datei. Klicken Sie mit der rechten Maustaste auf die neueste Version der Datei >> Revision abrufen: Ihre lokalen Änderungen werden überschrieben.
4. Führen Sie nun Ihren Code mit der neuesten Datei und der Sicherungsdatei zusammen (Schritt 1).
5. Synchronisieren und festschreiben Sie die neu zusammengeführte Datei.


1

Aktualisieren Sie Ihren Server und Client auf Subversion 1.9.

Wenn der out of dateFehler zufällig auftritt, wenn dies normalerweise nicht der Fall sein sollte, wenn Sie Commit ausführen, kann dies darauf hinweisen, dass Sie einen veralteten und nicht unterstützten Subversion 1.7 oder älteren Client oder Server verwenden.

Sie sollten den Server und die Clients aktualisieren, um das Problem zu beheben. Siehe den entsprechenden Eintrag in den Versionshinweisen zu Subversion 1.9: "Veraltete" Fehler beim Festschreiben über HTTPv1 .


1
Dies ist mir sogar mit TortoiseSVN 1.8.8 unter Windows passiert. Aktualisierung auf 1.9 hat geholfen.
Martin Pecka

1

Der Fehler liegt darin, dass Sie diese bestimmte Datei nicht aktualisiert haben. Erst aktualisieren, dann können nur Sie die Datei festschreiben.


1

Versuchte alles außer in .svn direkt zu ändern. Nichts hat geholfen, also hier ist meine Lösung.

Unter Eclipse> Fenster> Ansicht anzeigen> Verlauf habe ich gesehen, dass die Datei nicht auf dem neuesten Stand ist, obwohl ich mehrere SVN-Dateien "Überschreiben und Aktualisieren" / "Zurücksetzen" / Löschen und Auschecken erstellt habe.

Also ging ich zum Paket-Explorer> Rechtsklick auf Datei> Ersetzen durch> Neueste aus dem Repository .

Ein weiterer Blick in die Verlaufsansicht zeigte, dass die Datei jetzt auf der neuesten Version war.


1

"Aufräumen" Damit sind Sie auf dem richtigen Weg.

Klicken Sie mit der rechten Maustaste auf den Ordner svn und klicken Sie auf "Aufräumen". Führen Sie dies aus, wenn Sie diesen Fehler erhalten.


0

Dies geschah, als ich einen Zweig einer früheren Version mit Dateien aus dem Trunk aktualisierte. Ich habe Windows Explorer verwendet, um Ordner aus meinem Trunk-Checkout-Ordner zu kopieren und sie in meine Eclipse-Ansicht des Checkout-Ordners für Release-Zweige einzufügen. Jetzt wurde Windows Explorer so konfiguriert, dass keine "versteckten" Dateien angezeigt werden, die mit "." Beginnen, sodass ich nicht wusste, dass alle falschen .svn-Dateien in meinen Ordner zum Auschecken von Release-Zweigen eingefügt wurden. Doh!

Meine Lösung bestand darin, das beschädigte Eclipse-Projekt wegzublasen, es erneut zu überprüfen und die neuen Dateien dann sorgfältiger zu kopieren. Ich habe auch Windows geändert, um "versteckte" Dateien anzuzeigen.


0

Ich habe diesen Fehler beim Versuch, einige Dateien festzuschreiben, erhalten, nur war es eine Datei / ein Ordner, die in meiner Arbeitskopie nicht vorhanden war. Ich wollte wirklich nicht die Mühe machen, die Dateien zu verschieben und erneut zu überprüfen. Am Ende habe ich die .svn / entry-Datei bearbeitet und die fehlerhafte Verzeichnisreferenz entfernt.


0

In meinem Fall war nur das Löschen der lokalen Version und das erneute Auschecken einer neuen Kopie eine Lösung.


0

Ich habe gerade diesen Fehler bekommen. Ich empfehle, dass Sie zuerst auf Ihrem Server überprüfen, ob die Originaldatei vorhanden ist. Manchmal werden die Änderungen nicht in Ihrem lokalen Ordner vorgenommen. Wenn dies Ihre Situation ist, löschen Sie einfach Ihren Ordner und checken Sie erneut aus.


0

Um das Problem zu lösen, musste ich die Datei mit dem Problem zurücksetzen und meine Arbeitskopie aktualisieren. Später habe ich die Datei erneut geändert und nach diesen Schritten ist der Fehler nicht mehr aufgetreten.


0

Führen Sie einfach svn in die Befehlszeile ein oder wählen Sie in Windows die Option svn update.

  • Sobald dies erledigt ist, können Sie weitere Maßnahmen wie das Festschreiben und andere ergreifen.

0

Ich habe das gerade bekommen, als ich versucht habe, commitaus einem trunkVerzeichnis. Das Ausführen svn updateaus dem trunkVerzeichnis hat den Fehler nicht behoben. Durch Ausführen svn updateaus dem übergeordneten Verzeichnis (in das das .svnVerzeichnis gehört) wurde der Fehler jedoch behoben.

Meine Vermutung darüber, was passiert ist (ein Anwendungsfall unter anderem, es kann mehrere Gründe für diese "svn: E160024: Ressource veraltet; versuchen Sie zu aktualisieren" geben): Zusammen mit trunkgab es ein branchesVerzeichnis. Ich zog einen branches/branch-1in mastervon GitHub. svn updateAus dem übergeordneten Verzeichnis ( dh dem Stammverzeichnis meiner Arbeitskopie) trunkzu tun, anstatt etwas brancheszusätzlich zu tun trunk. Als ich es versuchtecommit erneut , gab es keinen Fehler.

Wie ich oben sagte, ist dies jedoch ein Fall unter wahrscheinlich vielen anderen.

Randnotiz: Im Gegensatz zu dem, was jemand vorgeschlagen hat, halte ich es nicht für eine gute Idee, manuell im .svnVerzeichnis zu spielen .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.