17 ответов:
(этот ответ был обновлен, чтобы соответствовать поведению SVN 1.8 и 1.9)
у вас есть 2 вопроса:
маркировка файлов как игнорируемых:
под " игнорируемым файлом "я имею в виду, что файл не будет отображаться в списках даже как" неверсированный": ваш клиент SVN будет притворяться, что файл вообще не существует в файловой системе.
игнорируемые файлы определяются "шаблон файла". Синтаксис и формат шаблонов файлов объясняется в онлайн-документации SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Шаблоны файлов в Subversion".
Subversion, начиная с версии 1.8 (июнь 2013 г.) и позже, поддерживает 3 различных способа указания шаблонов файлов. Вот резюме с примерами:
1 - Область Конфигурации Времени Выполнения -:
- это только на стороне клиента настройки, так что ваш
global-ignoresсписок не будет совместно с другими пользователями, и это применяется ко всем репозиториям, которые вы проверяете на своем компьютере.- этот параметр определен в файле области конфигурации среды выполнения:
- Windows (файловая система) -
C:\Users\{you}\AppData\Roaming\Subversion\config- Windows (на основе реестра) -
Software\Tigris.org\Subversion\Config\Miscellany\global-ignoresкакHKLMиHKCU.- Linux / Unix -
~/.subversion/config2-The
svn:ignoreсвойство, которое устанавливается на папки (не файлы):
- это хранится в репо, так другие пользователи будут иметь те же игнорировать файлы. Похоже на то, как
.gitignoreстроительство.svn:ignoreприменяется к каталогам и является нерекурсивным или наследуется. Любой файл или немедленно подкаталог родительского каталога, соответствующий шаблону файла, будет исключен.в то время как SVN 1.8 добавляет понятие "унаследованные свойства",
svn:ignoreсамо свойство игнорируется в каталогах не-непосредственных потомков:cd ~/myRepoRoot # Open an existing repo. echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt". svn status # Check to see if the file is ignored or not. > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored. svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory. svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory. echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt". svn status > ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored! > 1 unversioned file(так файл
./subdirectory/ignoreThisне игнорируется, даже если "ignoreThis.txt" наносится на.корень РЕПО).поэтому для рекурсивного применения списка игнорирования необходимо использовать
svn propset svn:ignore <filePattern> . --recursive.
- это создаст копию свойства в каждом подкаталоге.
- если
<filePattern>значение отличается в дочернем каталоге, то значение ребенка полностью переопределяет родителей, так что нет никакого "аддитивного" эффекта.- так что если вы измените элемент
<filePattern>корень., то вы должны изменить его с--recursiveчтобы перезаписать его на дочерние и дочерние каталоги.я отмечаю, что синтаксис командной строки противоречит интуиции.
- я начал с предположения, что вы проигнорируете файл в SVN, набрав что-то вроде
svn ignore pathToFileToIgnore.txtоднако это не так, как функция игнорирования SVN работает.3-The
svn:global-ignoresсобственность. Требует SVN 1.8 (июнь 2013):
- это похоже на
svn:ignore, за исключением того, что он использует функцию "унаследованные свойства" SVN 1.8.- сравнить
svn:ignore, шаблон файла автоматически применяется в каждом каталоге потомков (а не только в непосредственных потомках).
- это означает, что нет необходимости устанавливать
svn:global-ignoresС--recursiveфлаг, так как унаследованные шаблоны игнорирования файлов автоматически применяются, поскольку они унаследованный.выполнение того же набора команд, что и в предыдущем примере, но с помощью
svn:global-ignoresвместо:cd ~/myRepoRoot # Open an existing repo echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt" svn status # Check to see if the file is ignored or not > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored svn propset svn:global-ignores "ignoreThis.txt" . svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt" svn status > 0 unversioned files # the file is ignored here too!для пользователей TortoiseSVN:
вся эта схема сбивала меня с толку, потому что терминология TortoiseSVN (как используется в их системе меню Проводника Windows) изначально вводила меня в заблуждение - я не был уверен, что значение меню игнорирования "добавить рекурсивно", "добавить *" и " добавить " опции. Я надеюсь, что этот пост объясняет, как функция игнорирования привязывается к функции свойств SVN. Тем не менее, я предлагаю использовать командную строку для установки игнорируемых файлов, чтобы вы почувствовали, как это работает, а не с помощью графического интерфейса, и только с помощью графического интерфейса для управления свойствами после того, как вы освоитесь с командной строкой.
список файлов, которые игнорируются:
команда
svn statusскроет игнорируемые файлы (то есть файлы, соответствующие RGAglobal-ignoresкартины, или совпадать с непосредственный родительский каталогsvn:ignoreшаблон или совпадение любого каталога предковsvn:global-ignoresузор.использовать
--no-ignoreвозможность увидеть эти файлы в списке. Игнорируемые файлы имеют статусI, затем передайте вывод вgrepпоказывать только строки, начинающиеся с "I".команда:
svn status --no-ignore | grep "^I"например:
svn status > ? foo # An unversioned file > M modifiedFile.txt # A versioned file that has been modified svn status --no-ignore > ? foo # An unversioned file > I ignoreThis.txt # A file matching an svn:ignore pattern > M modifiedFile.txt # A versioned file that has been modified svn status --no-ignore | grep "^I" > I ignoreThis.txt # A file matching an svn:ignore patternта-да!
используйте следующую команду, чтобы создать список не под файлов контроля версий.
svn status | grep "^\?" | awk "{print $2}" > ignoring.txtзатем измените файл на оставьте только файлы, которые вы хотите на самом деле игнорировать. Затем используйте этот, чтобы игнорировать файлы, перечисленные в файле:
svn propset svn:ignore -F ignoring.txt .обратите внимание на точку в конце строки. Он сообщает SVN, что свойство устанавливается в текущем каталоге.
удалить файл:
rm ignoring.txtнаконец совершить,
svn ci --message "ignoring some files"затем вы можете проверить, какие файлы пропускаются через:
svn proplist -v
Если вы используете TortoiseSVN щелкните правой кнопкой мыши на файл и выберите TortoiseSVN / добавить в список игнорирования. Это добавит файл / подстановочный знак в
svn:ignoreсобственность.
svn:ignoreбудет проверяться при возврате файлов, а соответствующие файлы будут игнорироваться. У меня есть следующий список игнорирования для проекта Visual Studio .NET:bin obj *.exe *.dll _ReSharper *.pdb *.suoвы можете найти этот список в контекстном меню TortoiseSVN / Свойства.
вы можете игнорировать файл или каталог, как
.gitignore. Просто создайте текстовый файл списка каталогов / файлов, которые вы хотите игнорировать, и запустите следующий код:svn propset svn:ignore -F ignorelist.txt .или если вы не хотите использовать текстовый файл, вы можете сделать это так:
svn propset svn:ignore "first second third" .Источник: Блог Карстена-установить svn: игнорировать для нескольких файлов из командной строки
Я нашел статью .svnignore пример для Java.
пример: .svnignore для Ruby on Rails,
/log /public/*.JPEG /public/*.jpeg /public/*.png /public/*.gif *.*~и после этого:
svn propset svn:ignore -F .svnignore .примеры .gitignore. Вы можете использовать для вашего .свнигнор
как никто, кажется, не упоминал об этом...
svn propedit svn:ignore .затем отредактируйте содержимое файла, чтобы указать шаблоны для игнорирования, выйдите из редактора, и все готово.
при использовании propedit убедитесь, что нет никаких конечных пробелов, так как это приведет к исключению файла из списка игнорирования.
они вставляются автоматически, если вы используете tab-autocomplete в linux для создания файла для начала:
svn propset svn:ignore 'file1 file2' .
другое решение-это:
svn st | awk '/^?/{print }' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txtили строка за строкой
svn st | awk '/^?/{print }' > svnignore.txt svn propget svn:ignore >> svnignore.txt svn propset svn:ignore -F svnignore.txt . rm svnignore.txtпринцип действия:
- получает файлы состояния из svn
- сохраняет все файлы с ? в файл " svnignore.txt"
- получает уже проигнорированные файлы и добавляет их в файл "svnignore.txt"
- говорит svn игнорировать файлы в " svnignore.txt"
- удаляет файл
кроме того, если вы используете Tortoise SVN, вы можете сделать это:
- в контекстном меню выберите "TortoiseSVN", затем "Свойства"
- в появившемся окне нажмите кнопку "Создать", затем"дополнительно"
- в появившемся окне напротив "имя Свойства" выберите или введите "svn: ignore", напротив" значение свойства "введите нужное имя файла или имя папки или маску файла (в моем случае это было" */target"), нажмите"Применить свойство рекурсивно"
- ОК. Ладно.
- Commit
более читаемая версия bkbilly это:
svn st | awk '/^?/{print }' > svnignore.txt svn propget svn:ignore >> svnignore.txt svn propset svn:ignore -F svnignore.txt . rm svnignore.txtпринцип действия:
- получает файлы состояния из svn
- сохраняет все файлы с ? в файл " svnignore.txt"
- получает уже проигнорированные файлы и добавляет их в файл "svnignore.txt"
- говорит svn игнорировать файлы в " svnignore.txt"
- удаляет файл
svn statusрасскажет вам, какие файлы не находятся в SVN, а также что изменилось.посмотреть свойства SVN в игнор собственность.
для всех вещей SVN, то Красная Книга обязательно для прочтения.
добавление каталога в subversion и игнорирование содержимого каталога
svn propset svn:ignore '\*.*' .или
svn propset svn:ignore '*' .
- cd ~/.подрывная деятельность
- открыть config
- найти строку типа 'global-ignores'
- установите игнорировать тип файла следующим образом: global-ignores = *.о.* Ло *.Ла *.Аль .либы *.так .так.[0-9] *.pyc *.Пе 88 *.rej ~ ## .#* .*.СВП .DS_Store node_modules output
SVN
ignoreлегко управлять в TortoiseSVN. Откройте TortoiseSVN и щелкните правой кнопкой мыши на меню Файл, затем выберите Добавить в список игнорирования.добавить файлы в
svn:ignoreсобственность. Когда мы проверяем файлы, то те файлы, которые соответствуютsvn:ignoreэто будет проигнорировано и не будет зафиксировано.в проекте Visual Studio мы добавили следующие файлы для игнорирования:
bin obj *.exe *.dll *.pdb *.suoмы управляем исходным кодом на SVN Comparetrap использование этого метода успешно
используйте команду статус svn на вашей рабочей копии, чтобы показать состояние файлов, файлы, которые еще не находятся под контролем версий (и не игнорируются), будут иметь знак вопроса рядом с ними.
Что касается игнорирования файлов, вам нужно отредактировать свойство svn: ignore, прочитайте главу игнорирование Неверсированных элементов в svnbook по адресу http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html. в книге также описано больше об использовании svn статус.
- открыть вы используете продукт JetBrains (т. е. Pycharm)
- затем нажмите кнопку "фиксация" на верхней панели инструментов или используйте ярлык "ctrl + k" screenshot_toolbar
- в интерфейсе фиксации переместите ненужные файлы в другой список изменений следующим образом. screenshot_commit_change
- в следующий раз вы можете совершать только список изменений по умолчанию.
Comments