Чи можу я проігнорувати папку під час замовлення на svn? Мені потрібно ігнорувати папку DOC під час оформлення замовлення на моєму сервері побудови.
редагувати: Ігнорувати зовнішні не є варіантом. У мене є зовнішні, які мені потрібні.
Чи можу я проігнорувати папку під час замовлення на svn? Мені потрібно ігнорувати папку DOC під час оформлення замовлення на моєму сервері побудови.
редагувати: Ігнорувати зовнішні не є варіантом. У мене є зовнішні, які мені потрібні.
Відповіді:
Ви не можете безпосередньо ігнорувати папки під час оформлення каси, але ви можете використовувати рідкі каси в svn 1.5. Наприклад:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Це дозволить перевірити файли та каталоги зі стовбура вашого проекту у "my_checkout", але не повторитись у цих каталогах. Наприклад:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Потім, щоб зменшити вміст 'bar' вниз:
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Так, ви можете використовувати SVN 1.6. Спочатку потрібно зробити замовлення, а потім позначити папку для виключення, а потім видалити непотрібну папку.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
Відтепер будь-які оновлення робочої копії не будуть повторно заселяти папку документів.
Дивіться http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ та http://subversion.apache.org/docs/release-notes/1.6.html#sparse- вилучення каталогу для отримання більш детальної інформації.
Том
З версіями до 1.5 я виявив, що якщо ви оформили лише найвищу папку, а потім вибірково оновлювались, відтепер оновлення впливають лише на те, що ви перевірили. Тобто
svn co -N foo
cd foo
svn up -N bar
svn up
Прапор -N робить операцію нерекурсивною. Вищезгадане не перевірить нічого іншого на рівні foo, наприклад. скажімо, є папка lala
, остаточний svn up не перевірить цю папку, але оновиться bar
.
Але пізніше ви можете svn up lala
і таким чином додати його до каси.
Імовірно, це також працює з 1.5.
Ви можете помістити папку "Документи" у зовнішній сховище, а потім використовувати svn checkout --ignore-externals
.
external repository
означає. Ви можете пояснити це?
Так, Subversion 1.5 має функцію під назвою « Рідкі каси», які можуть робити саме такі речі.
Я знайшов це питання шукаючи спосіб перевірити джерела WebKit, виключаючи регресійні тести. Я закінчив таке:
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)
Зауважте, ви можете змінювати виключення, як вважаєте за потрібне, але. * Рекомендується пропустити робочий каталог (який уже актуальний) та всі каталоги .svn.
Я нещодавно вирішив те саме завдання. Ідея полягає у тому, щоб негайний список папок / файлів у сховищі виключав потрібні записи, а потім перевіряв решту папок та оновлював безпосередні файли, якщо такі є. Ось рішення:
# 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"`
Змінити вихідний робочий каталог. Скопіюйте команди. Вставити. Змініть відповідну URL-адресу та виключіть шаблон. Виконайте команду.
Дякую,
Ні, ігнорування призначене лише для додавання файлів.
Ви можете використовувати рідкі каси (якщо ви використовуєте svn 1.5)
Як уже згадували деякі інші, ви можете просто використовувати властивості svn: externals, а потім опцію --ignore-externals під час оформлення замовлення. Однак слід зазначити, що svn: externals не обов'язково посилається на інше сховище. Це може бути посилання на якусь іншу папку того ж репо.