2009-11-13 8 views
8

Ich versuche, etwas Arbeit zu verpflichten, aber svn schlägt immer fehl und sagt mir, dass eine Datei, die ich geändert habe, veraltet ist. Ich habe versucht, zuerst zu aktualisieren, das funktioniert nicht. Bereinigung funktioniert nicht. Wenn ich die Datei zurücksetze, kopiere meine Änderungen und versuche es, es schlägt immer noch fehl. Es ist auch nicht nur eine bestimmte Datei, wenn ich das Ganze wieder auf eine vorherige Revision zurückstelle und irgendeine Datei modifiziere, tritt dieses Problem immer noch auf.kann nicht zu SVN commit, weil Arbeitskopie immer veraltet ist

Ich habe keine Ideen mehr. Hat irgendjemand etwas?

Danke.

Antwort

5

Versuchen Sie, eine neue Kasse zu erstellen, und kopieren Sie Ihre Änderungen darauf. Ich hatte auch einige unerklärliche Probleme mit TortoiseSVN, und das war das Einzige, was mir geholfen hat.

+0

Ich selbst geriet in die gleiche Art von Schwierigkeiten, und die Lösung war immer das gleiche ... Neue Arbeitskopie, manuelle Kopie der Änderungen, commit, löschen defekte Arbeitskopie ... –

2

Hier ist ein häufiges Szenario, das ich gesehen habe, verursachen eine Menge Leute Kopfschmerzen. Es ist möglich, dass Sie in diesem Zustand sein könnten:

  1. Arbeitskopie in gebrochenem Zustand befindet. SVN beschwert sich, dass Datei 'bar' unter 'foo' Verzeichnis verursacht Probleme.
  2. Der Entwickler erstellt eine Sicherungskopie des Verzeichnisses foo.
  3. Entwickler löscht foo dir aus der Arbeitskopie.
  4. Entwickler macht svn update, foo und bar sind rückgängig gemacht und svn ist glücklich.
  5. Entwickler Kopien Sicherungskopie von foo wieder über in der Arbeitskopie und SVN ist nicht mehr glücklich und nicht mehr in der Lage zu aktualisieren und/oder

Die fatalen Fehler begehen hier waren, wenn der Entwickler eine Sicherung von dir gemacht 'foo', sie haben auch eine Sicherungskopie aller versteckten ".svn" Verzeichnisse erstellt, die in foo verschachtelt sind.

Also, die Lösung (in meiner Erfahrung), ist die Verwendung von Tortoise Svn "Export" -Fähigkeit, um eine Sicherungskopie von foo zu machen. Tortoise svn Export erstellt eine Kopie der Verzeichnisstruktur ohne svn Metadaten (.svn dirs). Auf diese Weise, sobald Sie zurück zu Schritt 3 sind und Svn ist glücklich, wenn Sie Ihre Sicherungskopie zurück in Ihre Arbeitskopie Verzeichnis kopieren, sollte Svn in der Lage sein, die Änderungen korrekt zu erfassen.

Wenn es nur eine einzige Datei ist, für die Sie eine Sicherungskopie erstellen, hilft das wiederum nicht.

+0

Das war nett und klar. Danke vielmals! –

3

Wenn Sie Ihre Datei aktualisieren können, scheint die Arbeitskopie ordnungsgemäß zu funktionieren.

Haben Sie das Verzeichnis oder nur die Datei aktualisiert? Ich hatte Situationen, in denen svn nicht committen konnte, weil die Verzeichniseigenschaften im Repository geändert wurden. Ein Update des Verzeichnisses löste dieses Problem.

Ein anderer Versuch ist, svn cleanup zu verwenden.

Neue Kasse ist der letzte Ausweg.

0

Für mich funktionierte dieses Verfahren: In einer einzigen Datei hatte ich auf eine alte Version der Datei zurückgesetzt. Wenn ich das Projekt festschreiben wollte, hatte ich die Nachricht, dass diese bestimmte Datei veraltet ist und nicht festgeschrieben wurde.

Was soll getan werden, ist es, den Inhalt der Datei zu kopieren und zurück auf die neueste Version dieser Datei svn.

Sobald Sie fertig sind, kopieren Sie den Inhalt, den Sie gespeichert haben, in die Datei und committen Sie dann. Das hat für mich funktioniert.

0

Ich hatte diesen Fehler beim Umbenennen von Java-Paketen (Verzeichnisse für Svn).

Ich löste es durch "Override und Update" auf gelöschte Verzeichnis (hat eine in meinem Projekt leer). Dann commited das neue Verzeichnis mit Dateien. Danach löschte das umbenannte Projekt erneut und commited es erneut.

Verwandte Themen