2009-08-09 8 views
1

Ich möchte ein Verzeichnis im Repository über die Befehlszeile löschen. Gleichzeitig möchte ich Subversion diese Änderung nicht auf die lokale Arbeitskopie übertragen.Wie lösche ich ein Verzeichnis im SVN-Repository und setze es gleichzeitig auf svn: ignore?

Das Verzeichnis, in der Arbeitskopie sollte unberührt geblieben sein, wie es ist (ach, ich will svn: ignore Eigenschaft). Wie auch immer, ich konnte keinen Weg finden, dies zu erreichen, ohne dass die Löschungen auf meine Arbeitskopie übertragen wurden.

Antwort

1

Soweit ich weiß, ist das unmöglich. svn:ignore wird nichts tun, sobald Dateien tatsächlich versioniert werden.

Es macht so etwas wie dieses etwas gefährlich zu tun, wie Menschen lokale Änderungen haben könnten sie behalten wollen. Wenn sie nicht aufpassen, könnten sie sie verlieren.

+0

Es ist nicht gefährlich. Subversion verwirft lokale Änderungen niemals ohne Warnung. Wenn ein Update einen lokal geänderten Ordner löscht, sollten Sie einen Baumkonflikt erhalten. –

+0

Das dachte ich mir, bis ich es nicht tat. Ich sage nicht, dass es definitiv Unordnung bringen wird, aber sei vorsichtig. Vor nur zwei Tagen "verschwand" TortoiseSVN eine neu hinzugefügte Datei, die noch nicht festgeschrieben wurde, nur weil ich das Verzeichnis verschoben habe. – Thorarin

1

Wie Thorarin sagte, ist es nicht möglich scheint, da der Löschbefehl würde unabhängig von der SVN propagiert: Das Objekt ignorieren.

Statt Löschen, könnte eine sicherere Migration seine das problematische Verzeichnis (so etwas wie dir.old, umbenennen und dann svn add:. Auf dem ursprünglichen Verzeichnisnamen ignorieren Sie könnten dann die Leute sagen zu ihrem Verzeichnis manuell kopieren zurück zum ursprünglichen Namen, bevor Sie es vollständig löschen

Abhängig von der Art der Dateien in diesem Verzeichnis, möchten Sie vielleicht auch, dass es dauerhaft erhalten bleibt, damit Entwickler ihre Änderungen synchronisieren können. In diesem Fall kann es deutlich machen, dass es sich um ein Template-Verzeichnis ist, indem sie es wie dir.tmpl etwas nennen, so dass sie nicht direkt verwendet bekommen.

0

Hier eine gestohlene Antwort auf eine andere question (danke Maciej Łebkowski!):

Aus meiner Erfahrung: nicht diese Datei unter Versionskontrolle und verwenden Sie svn: Ignorieren Sie darauf.

Es ist ein wenig schwierig zu Beginn, da Sie eine Datei, die bereits unter Versionskontrolle ist, nicht ignorieren können und Sie eine Datei nicht aus der Versionskontrolle entfernen können (und von jeder Arbeitskopie beim nächsten Update) ...). Aber wenn Sie es endlich schaffen, das Repo korrekt einzurichten, funktioniert es wie Charme. Vergessen Sie nicht, eine generische Vorlage anstelle Ihrer ursprünglichen Konfigurationsdatei hinzuzufügen (so dass jeder über neue Konfigurationsvariablen usw. Bescheid weiß).

Für neue Repo:

mkdir Config
svn add Config
svn propset svn: ignore '* .conf' config

Für bestehende Repo: Zwar haben eine Sicherungskopie Ihrer config in jeder Arbeitskopie, dann remove (svn del) config aus dem Repo, commit (bitte beachten Sie: Die Datei wird beim nächsten Update in jeder Arbeitskopie gelöscht! Sie müssen eine Sicherungskopie haben) und dann stellen Sie die Datei wieder her und setzen Sie die Eigenschaft ignorieren

Eine andere Möglichkeit ist eine Sperre. Es garantiert, dass niemand die Datei festschreibt, aber es wird bei jedem Commit zu einem Fehler kommen. nicht sehr nett.

Und der dritte Weg - Changesets, eine neue Funktion in SVN 1.5-Clients. Das ist ordentlich, aber es bezieht sich nur auf eine Arbeitskopie, nicht global auf ein Repository. Und Sie müssen sie manuell einrichten, fügen Sie jede neue Datei hinzu - es ist schwer zu pflegen.

Verwandte Themen