2013-06-25 7 views
33

В Git, если у меня есть проект с большим количеством проектов внутри, предположим, много проектов Java, я могу просто создать файл .gitignore в корне, и он будет «уважаться» в весь репозиторий.SVN игнорировать как .gitignore

Как это сделать для проекта SVN?

Например, как я могу сделать настройку «svn ignore» (через строку cmd) для .gitignore следующим образом?

*.class 
*.jar 
*.war 
*.ear 
target/ 
.classpath 
.settings/ 
.project 
.metadata 
bin/ 

Важнейшая часть вопроса: Как я могу заставить ее работать с новыми папками внутри корня? Пример:

Я побежал svn propset svn:ignore "*.class" . -R в свой корень и совершил. Ok:

root 
- folder1/ 
-- *.class (ignored) 
-- other files (ok) 
- folder2/ 
-- *.class (ignored) 
-- other files (ok) 

Теперь я создаю папку 3. Предыдущие svn:ignore настройки не будут применяться, верно? Есть ли способ сделать это так?

+0

Возможный дубликат [Рекурсивное игнорирование файлов во всем исходном дереве в subversion] (http://stackoverflow.com/questions/1230700/recursive-ignoring-files-in-the-entire-source-tree-in-subversion) –

ответ

54

Вы можете использовать svn:ignore. Как правило, вы должны сказать SVN применять специальные свойства к файлам:

svn propset svn:ignore "*.jpg" . 

(Обратите внимание на точку в конце команды.)

Для нескольких файлов, которые вы можете добавить символ новой строки.

Тип так же, как здесь с разрывами строк:

svn propset svn:ignore "file1 
file2 
file3" dir1 

Убедитесь, что файлы игнорируются:

svn status --no-ignore 

Затем зафиксировать код.

И да, многие повторяющиеся вопросы уже доступны.

Вы можете сослаться на мой любимый svn cheatguide.

Вы можете создать файл, svn-ignore.txt, с игнорируемых файлов и каталогов:

*.class 
*.jar 
*.war 
*.ear 
target/ 
.classpath 
.settings/ 
.project 
.metadata 
bin/ 

Теперь попробуйте следующее:

svn propset svn:ignore -RF /root/svn-ignore.txt . [dot for current dir] 

-R для рекурсивной.

+0

Как бы вы обрабатывали многоуровневые каталоги, например, 'app/code/core' – input

+0

Рекурсивный параметр« -R »должен обрабатывать любую глубину каталогов. – Gerrit

+2

Из чит-листа:' '' Редактировать игнорирование dir: $ svn propedit svn : ignore your_dir_name''' – MarkHu

-1

Я решил эту проблему несколько иначе. Это будет работать, только если вы используете оболочку Bash и установите Perl, но это почти все машины Mac и Linux.

Добавьте следующее к .bashrc и .bash_profile файлов:

alias _ss="svn status | egrep -v '`cat .svnignore|perl -p -e 's/\n/|/'`'" 

Не забудьте либо перезагрузить терминал или сделать:

source ~/.bashrc 
(or .bash_profile if that's what you used) 

Теперь создайте файл с именем .svnignore, и поместите его в каталог, в котором выгрузили свой репозиторий.

files/to/ignore 
another/file 
tmp 
node_modules 

Теперь при запуске

_ss 

в корневой директории вашей рабочей копии, она будет читать файл .svnignore и игнорировать все в нем.

I версия файла .svnignore так же, как и версия файла .gitignore.

Примечание: Это влияет только на Svn команду статуса, и это не помешает вам добавить/совершение игнорируемых файлов.

+1

Нет необходимости в таких хаках, пока есть правильный способ сделать это. – dimir

Смежные вопросы