2009-08-30 2 views
10

In meinem Repository, kann sagen, dass ich dieses:Subversion - Kasse ein übergeordnetes Verzeichnis

Animal 
    Dog 
    Beagle 
    Hound 
    ... 

Können sagen, ich Hund in ein Arbeitsverzeichnis ausgecheckt und ich erkennen, hoppla, ich wollte Tier wirklich zur Kasse.

Ich kann meine Arbeitskopie, das Dog-Verzeichnis und Checkout Animal löschen, aber gibt es so, wie ich es tun kann, ohne zu löschen und wieder auschecken?

Wenn meine Arbeitskopie von Dog Tier als einen übergeordneten Ordner hat und ich Kasse Tier ohne Dog zu löschen, bekomme ich etwas wie "Subversion konnte nicht hinzugefügt werden Verzeichnis versioniert den gleichen Namen bereits existiert".

Ich benutze auch Schildkröte. Vielen Dank.

+3

Was ist das Problem mit dem Löschen und Auschecken wieder? Wenn Sie bereits Änderungen vorgenommen haben, binden Sie sie ein und beginnen Sie dann erneut. – kajaco

+1

Es ist kein Problem. Das habe ich gemacht und es hat funktioniert. Ich frage mich nur, ob es einen besseren Weg gibt, oder es gibt einen richtigeren Weg. – Steve

Antwort

4

Dies ist nicht direkt möglich.

Der einfachste Weg ist, Ihre Arbeitskopie zu löschen und einen neuen Checkout von Animal durchzuführen.

Wenn Sie Änderungen in Dog haben, die Sie möchten halten, bewegen Dog in ein temporäres Verzeichnis, Kasse Animal und kopieren Dog zurück in das Animal Verzeichnis.

2

Sie suchen svn switch, die Ihre Arbeitskopie aktualisiert, um einen neuen Pfad zu reflektieren. Geänderte Dateien werden jedoch nicht berührt. Klicken Sie in TortoiseSVN mit der rechten Maustaste und wählen Sie "Switch ..." aus dem Kontextmenü.

Der häufigere Anwendungsfall für svn switch ist, zwischen Zweigen zu wechseln, die von demselben Punkt aus verwurzelt sind, so dass Sie verschiedene Ansichten desselben Codes haben können. Sie können jedoch zwischen beliebigen Pfaden in Ihrem Repository wechseln.

+1

Aber mein Eltern-Verzeichnis, Animal, steht nicht unter Versionskontrolle, daher kann ich nicht zu ihm wechseln, zumindest nicht von Tortoise. Vielleicht über die Befehlszeile? – Steve

+1

Ich bin verwirrt. Wie kann Ihr Repository Animal enthalten, wenn es nicht unter Versionskontrolle steht? Ist das ein Tippfehler? –

+1

Ich habe eine Kopie (Zweig) erstellt, um Animal zu erstellen. In meiner Arbeitskopie hat Animal das Verzeichnis .svn nicht. Es ist ein Ordner, der den gleichen Namen wie der Repository-Ordner hat. Mein Arbeitsverzeichnis ist also ein exaktes Duplikat der Repository-Struktur, aber ich habe Dog to Dog ausgecheckt. Hoffnung, die Sinn macht. – Steve

0

Ich habe gefunden, um zu vermeiden, vom Svn-Server herunterladen, was bereits auf meiner Festplatte ist, dann Aktualisierung oder Kasse erfolgt mit --depth empty. So etwas wie: svn co --depth empty Animal ; cd Animal ; svn update --depth empty Dog

Wie auch immer, die Idee ist, Dog als Verzeichnis in Animal/.svn/entries zu bekommen.

Dieses „--depth empty“ den tatsächlichen Inhalt von Download SVN hält, aber SVN funktioniert das Unterverzeichnis machen (in diesem Fall Dog) und SVN einen Eintrag für das Dog Unterverzeichnis in Animal/.svn/entries nicht setzen.

Ersetzen Sie dann das Unterverzeichnis Hund mit der Kopie, die Sie bereits haben.

Sie können überprüfen, ob dies funktioniert, indem Sie eine der Dateien irgendwo in Dog schlagen und eine svn update im Verzeichnis Animal tun. Die gehackte Datei sollte vom Server heruntergezogen werden.

+0

Funktioniert nicht: dann wird 'Aktualisieren '.': Übersprungene 'Amtsleitung' - Eine blockierende Arbeitskopie wurde gefunden Bei Revision 13370. Zusammenfassung der Konflikte: Übersprungene Pfade: 1' wenn' svn up' gemacht wird in 'Tier'. –

+0

Schon lange nicht mehr, also bin ich mir nicht sicher, was das Problem ist. SVN sollte die Animal and Dog Verzeichnisse erstellen, oder? Es sollte also keine Arbeitskopie geben. Eine andere Idee ist vielleicht SVN hat sich seit '13 geändert, so dass dieser Trick nicht mehr funktioniert. –

0

Ja, Sie können das übergeordnete Verzeichnis zuordnen.

Um dies zu tun, müssen Sie nur .svn -Verzeichnis aus "Hund" (Kind) Verzeichnis löschen und SVN Update auf übergeordnetes Verzeichnis tun. Es wird bestehende Datei als Versioned kopieren und Delta-Inhalt von Dog Verzeichnis von SVN-Server herunterladen.

Bitte beachten Sie: Sie sollten genaue Verzeichnisstruktur als SVN-Verzeichnisstruktur haben.