SVN: игнорировать некоторые каталоги рекурсивно



Я не хочу никакого каталога с именем build или dist чтобы войти в мой SVN независимо от того, как глубоко в дереве это.



это возможно? В git я просто поставил



build
dist


в своем .gitignore в корне, и он рекурсивно игнорирует. Как это сделать с svn? Пожалуйста, не говорите мне делать propset на каждом родительском dir...

820   15  

15 ответов:

начиная с subversion 1.8, теперь есть svn:global-ignores свойство, которое работает как svn:ignore но рекурсивно (так что установите это в свой каталог верхнего уровня)

svn propset принимает --recursive как вариант, так что вы можете сделать это, с двух минусов:

  1. вы должны проверить весь репозиторий (или, по крайней мере, все папки в нем), и
  2. вы должны помнить, чтобы установить svn:ignore свойства всякий раз, когда вы добавляете новую директорию

это невозможно сделать. В Subversion есть только два механизма игнорирования,svn:ignore (что является нерекурсивным) и global-ignores (который не является специфичным для репозитория).

это работает для меня:

 svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>

добавить в ваш ~/.в 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

    Ничего не найдено.