Czy mogę zignorować folder na svn checkout? Muszę zignorować folder DOCs podczas pobierania na moim serwerze kompilacji.
edycja: Ignoruj zewnętrzne nie jest opcją. Mam kilka elementów zewnętrznych, których potrzebuję.
Czy mogę zignorować folder na svn checkout? Muszę zignorować folder DOCs podczas pobierania na moim serwerze kompilacji.
edycja: Ignoruj zewnętrzne nie jest opcją. Mam kilka elementów zewnętrznych, których potrzebuję.
Odpowiedzi:
Nie możesz bezpośrednio ignorować folderów przy pobieraniu, ale możesz użyć rzadkich pobrań w svn 1.5. Na przykład:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Spowoduje to sprawdzenie plików i katalogów z linii głównej twojego projektu do 'my_checkout', ale nie powtórzy w tych katalogach. Na przykład:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Następnie, aby pobrać zawartość „bar”:
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Tak, możesz używać SVN 1.6. Najpierw musisz dokonać płatności, a następnie zaznaczyć folder do wykluczenia, a następnie usunąć niechciany folder.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
Od teraz żadne aktualizacje kopii roboczej nie będą ponownie wypełniać folderu dokumentów.
Zobacz http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ i http://subversion.apache.org/docs/release-notes/1.6.html#sparse- wykluczenie katalogu, aby uzyskać więcej informacji.
Tomek
W wersjach wcześniejszych niż 1.5 stwierdziłem, że jeśli wyewidencjonujesz tylko najwyższy folder, a następnie wybiórczo zaktualizujesz, od tego momentu aktualizacje będą miały wpływ tylko na to, co wyewidencjonowałeś. To znaczy.
svn co -N foo
cd foo
svn up -N bar
svn up
Flaga -N sprawia, że operacja nie jest rekurencyjna. Powyższe nie spowoduje sprawdzenia niczego innego na poziomie foo, np. powiedzmy, że istnieje folder lala, ostateczne svn up nie sprawdzi tego folderu, ale zostanie zaktualizowane bar.
Ale później możesz svn up lalai tym samym dodać go do kasy.
Przypuszczalnie działa to również z wersją 1.5.
Możesz umieścić folder docs w zewnętrznym repozytorium, a następnie użyć svn checkout --ignore-externals.
external repositoryznaczy. Możesz to wyjaśnić?
Tak, Subversion 1.5 ma funkcję o nazwie Sparse checkouts, która może zrobić dokładnie tego rodzaju rzeczy.
Znalazłem to pytanie, szukając sposobu na sprawdzenie źródeł WebKit z wyłączeniem testów regresji. Skończyło się na tym:
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)
Zauważ, że możesz zmienić wykluczenia według własnego uznania, ale. * Zaleca się pominięcie katalogu roboczego (który jest już aktualny) i wszystkich katalogów .svn.
Niedawno rozwiązałem to samo zadanie. Chodzi o to, aby uzyskać natychmiastową listę folderów / plików w repozytorium, z wyłączeniem potrzebnych wpisów, a następnie sprawdzić pozostałe foldery i zaktualizować najbliższe pliki, jeśli takie istnieją. Oto rozwiązanie:
# 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"`
Przejdź do źródłowego katalogu roboczego. Skopiuj polecenia. Pasta. Zmień odpowiedni adres URL i wyklucz wzorzec. Uruchom polecenie.
Dzięki,
Nie, ignorowanie służy tylko do dodawania plików.
Możesz użyć rzadkich kas (jeśli używasz svn 1.5)
Jak kilku innych wspomniało, możesz po prostu użyć właściwości svn: externals, a następnie opcji --ignore-externals podczas realizacji transakcji. Należy pamiętać jednak, że svn: externals jest nie koniecznie odnosić się do innego repozytorium. Może to być odniesienie do innego folderu w tym samym repozytorium.