Frage

Kann ich ignorieren Sie einen Ordner auf svn checkout? Ich brauche DOCs Ordner auf der Kasse an meinem Build-Server zu ignorieren.

Bearbeiten Ignorieren Externen ist keine Option. Ich habe ein paar Äußerlichkeiten, die ich brauche.

War es hilfreich?

Lösung

Sie können nicht direkt ignorieren Ordner auf einem der Kasse, aber Sie können spärliche Auscheckvorgänge in SVN 1.5 verwenden. Zum Beispiel:

$ svn co http://subversion/project/trunk my_checkout --depth immediates

Prüfen Dateien und Verzeichnisse aus dem Projekt Stamm in ‚my_checkout‘, aber nicht in diese Verzeichnisse Rekursion. Zum Beispiel:

$ cd my_checkout && ls
bar/ baz foo xyzzy/

Dann wird der Inhalt von 'bar' runter:

$ cd bar && svn update --set-depth infinity

Andere Tipps

Ja, Sie können mit SVN 1.6. Sie müssen eine Kasse tun zuerst markieren Sie dann den Ordner für den Ausschluß dann die unerwünschten Ordner löschen.

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

Von nun an alle Aktualisierungen der Arbeitskopie nicht die docs Ordner neu zu besiedeln.

Siehe http: //blogs.collab. net / subversion / 2009/03 / spärlich Verzeichnisse-jetzt-mit-Ausschluß / und http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion für weitere Details.

Tom

Mit Versionen vor 1.5 Ich habe festgestellt, dass, wenn Sie nur den obersten Ordner Kasse und dann selektiv aktualisieren, von da an Updates nur bewirken, was Sie haben ausgecheckt. D. h.

svn co -N foo
cd foo
svn up -N bar
svn up

Der N-Flag macht die Bedienung nicht-rekursiv. Die oben nicht überprüfen alles andere auf der foo Ebene aus, z. B. sagen, dass es ein Ordner lala ist, wird das letzte SVN auf diesen Ordner nicht überprüfen, aber es wird bar aktualisieren.

Aber zu einem späteren Zeitpunkt können Sie svn up lala und damit, fügen Sie zur Kasse.

Vermutlich funktioniert das auch mit 1.5.

Dies ist in TortoiseSVN Client 1.7.1 (könnte auch in einigen älteren Versionen verfügbar sein):

  • SVN Kasse -> Wählen Sie URL-Repository

  • Klicken Sie auf „Zur Kasse Artikel“ (unter Kasse Tiefe) und wählen Sie nur die erforderlich Ordner!

Sie könnten die docs Ordner in einem externen Repository setzen und dann svn checkout --ignore-externals verwenden.

Ja, Subversion 1.5 eine Funktion namens hat Sparse Auscheckvorgänge , dass genau diese Art der Sache tun.

Ich fand diese Frage nach einer Möglichkeit, die WebKit Quellen zu überprüfen, während der Regressionstests auszuschließen. Ich landete mit dem folgenden:

svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
  --depth immediates

cd WebKit
find . \
  -maxdepth 1 -type d \
  -not -name '.*' \
  -not -name '*Tests' \
  -not -name 'Examples' \
  -not -name 'Websites' \
  | (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)

Beachten Sie die Ausschlüsse ändern, wie Sie sehen, passen, aber. * Das Arbeitsverzeichnis zu überspringen empfohlen (die bereits auf dem neuesten Stand ist) und alle die .svn Verzeichnisse.

Ich habe vor kurzem die gleiche Aufgabe gelöst. Die Idee ist, die sofortige Liste der Ordner / Dateien im Repository ausschließen die Einträge, die Sie erhalten müssen, dann die restlichen Ordner überprüfen und aktualisieren die unmittelbaren Dateien falls vorhanden. Hier ist die Lösung:

    # Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
    # This files are to be excluded (folders are ending with '/')
    # this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
    # Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
    # Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
    # Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
    # Initial nonrecursive checkout of repository - just empty
    # to the current (./) working directory
svn co $rpath ./ --depth empty && \
    # Update the files
svn up $files &&\
    # Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`

Wechseln Sie in Quelle-Arbeitsverzeichnis. Kopieren Sie die Befehle. Einfügen. Ändern Sie entsprechende URL und verstehen sich inklusive Muster. Führen Sie den Befehl aus.

Danke,

Nein

, ignorieren ist nur für das Hinzufügen von Dateien.
Sie können spärliche Kassen verwenden (wenn Sie SVN 1.5)

Wie einige andere erwähnt haben, können Sie einfach svn: externals Eigenschaften und dann die --ignore-externals Option, wenn Sie Prüfung. Eine Sache zu beachten ist jedoch, dass svn: externals tut nicht unbedingt braucht, um ein anderes Repository zu beziehen. Es kann ein Hinweis auf einen anderen Ordner in der gleichen Repo sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top