SVN: игнорировать некоторые каталоги рекурсивно
Я не хочу никакого каталога с именем build или dist чтобы войти в мой SVN независимо от того, как глубоко в дереве это.
это возможно? В git я просто поставил
build
dist
в своем .gitignore в корне, и он рекурсивно игнорирует. Как это сделать с svn? Пожалуйста, не говорите мне делать propset на каждом родительском dir...
15 ответов:
начиная с subversion 1.8, теперь есть
svn:global-ignoresсвойство, которое работает какsvn:ignoreно рекурсивно (так что установите это в свой каталог верхнего уровня)
svn propsetпринимает--recursiveкак вариант, так что вы можете сделать это, с двух минусов:
- вы должны проверить весь репозиторий (или, по крайней мере, все папки в нем), и
- вы должны помнить, чтобы установить
svn:ignoreсвойства всякий раз, когда вы добавляете новую директорию
это невозможно сделать. В Subversion есть только два механизма игнорирования,
svn:ignore(что является нерекурсивным) иglobal-ignores(который не является специфичным для репозитория).
добавить в ваш ~/.в Subversion/config или /и т. д./подрывной/конфигурационный файл:
[miscellany] global-ignores = build dist
можно игнорировать сборки и dist dirs, удалив каталоги из системы управления версиями. Хитрость заключается в том, чтобы использовать параметр --keep-local, чтобы оставить каталог в рабочей копии. Например:
svn rm dist --keep-local svn ci -m'removed build directory from version control'каталог больше не будет отслеживаться subversion, но он все равно будет находиться в вашей рабочей копии для хранения вывода компилятора и т. д.
ура, Джо
чтобы игнорировать все такие файлы во всех репозиториях, вы можете добавить
global-ignoresв свой файл конфигурации для каждого пользователя.в Unix-подобных системах эта область отображается в виде каталога с именем .subversion в доме пользователя справочник. На системах Win32 , Subversion создает папку с именем Подрывная деятельность, как правило, внутри Область данных приложения пользователя каталог профиля
посмотреть настройки Варианты
к сожалению, для этого нет опции для каждого репозитория. Это в основном для каждого пользователя или для каждого каталога, поэтому несколько
svn:ignoresвероятно, это путь, как раздражает, как это может быть.
например структура папок:
Project/ Project/dist/ cd Project svn propset svn:ignore '*' dist/ svn ci -m "content of dist ignored"хорошо сделать svn удалить содержимое dist перед командой ignore, поэтому для ветвей dist будет пустым.
работал на меня, проверено сегодня. вот страница, объясняющая это немного
сначала вам нужно перейти в верхнюю папку вашей рабочей копии и создать там файл (скажем .svnignore), где вы должны разместить все шаблоны, которые вы хотите игнорировать, например (для проекта Android):
bin gen proguard .classpath .project local.properties Thumbs.db *.apk *.ap_ *.class *.dexпотом вы выполните следующую команду (помните, что вы должны быть в верхней папке вашей рабочей копии):
svn propset svn:ignore -R -F .svnignore .Это будет работать только для папок и файлов, которые еще не под контролем версий. Если вы хотите папку (или файл), который является будучи версионным, чтобы начать игнорироваться, удалите его из системы управления версиями, выполнив команду:
svn rm --keep-local <path>получил все это из этой замечательной статьи, которая объясняет все это: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/
в subversion 1.8 over можно установить global-ignores для текущего репозитория.
svn propset svn:global-ignores build . svn propset svn:global-ignores dist .также вы можете создать папку с именем .svnignore, и написать условия.
build distпомните одно условие на строку, установка build/* или dist / debug напрасна. Затем выполните команду:
svn propset svn:global-ignores -F .svnignore .
создайте файл и добавьте в него свои игнорирования
ingore-list:
file1 directory1 file2 etc...затем примените следующую команду
for n in directory; do svn propset svn:ignore -F ignore-list $n; doneкаталог-это имя вашего каталога, вы можете также подразделить каталог/подкаталог. Или используйте *, чтобы отметить текущий каталог, в котором вы находитесь.
это предполагает, что вы используете bash в качестве оболочки
svn propset --recursive svn:ignore svn_ignore_rules .где svn_ignore_rules-это файл, содержащий правила игнорирования -- по одному на строку
конечно, вы должны повторно запустить его каждый раз, когда вы добавляете новый каталог в репо
svn_ignore_rules также можно считать проверенным в репо, чтобы быть повторно используемым другими пользователями, имеющими доступ на запись в репо
одним из способов было бы добавить какую - то проверку либо до, либо после фиксации крючка, но это примечание прямо вперед, если вы не являетесь владельцем сервера РЕПО.
поскольку, похоже, нет решения для этой, вероятно, общей проблемы, я хотел бы поделиться нашим решением. Как уже ясно, вы можете использовать
svn:ignoreсвойство, это относится к одному каталогу (и, следовательно, не для новых), или вы используетеglobal-ignoresкоторый применяется к одному пользователю (но не принадлежит репозиторию).чтобы сделать жизнь немного проще, я создал reg файл с именем
Settings.Svn.regи добавил его в корень репозитория. Теперь все могут дважды щелкните этот regfile один раз, и настройки сделаны.REGEDIT4 [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany] "global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"Я был бы очень признателен за решение в репозитории SVN, поэтому, если кто-то знает, не могли бы вы поделиться им?
cd parent_dir #the directory containing folder to be ignored recursively svn propedit svn:ignore . #will open up svn-prop.tmp enlist folder(s) ^X Y commit -m 'ignore targeted direcoty'
Comments