Как игнорировать файлы в Subversion?
Также, как найти файлы, которые не находятся под управлением версиями?
Как игнорировать файлы в Subversion?
Также, как найти файлы, которые не находятся под управлением версиями?
(Этот ответ обновлен в соответствии с поведением 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 разных способа указания шаблонов файлов. Здесь резюме с примерами:
global-ignores
:global-ignores
не будет использоваться другими пользователями, и он применим ко всем репозициям на вашем компьютере.C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
как в HKLM
, так и HKCU
.~/.subversion/config
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
" применяется к корню repo .
).
Поэтому, чтобы применить список игнорирования рекурсивно, вы должны использовать svn propset svn:ignore <filePattern> . --recursive
.
<filePattern>
отличается от дочернего каталога, тогда дочернее значение полностью переопределяет родителей, поэтому эффект добавления не существует.<filePattern>
на корневой каталог .
, вы должны изменить его с помощью --recursive
, чтобы перезаписать его в дочерних и потоковых каталогах.Я отмечаю, что синтаксис командной строки является интуитивно понятным.
svn ignore pathToFileToIgnore.txt
, но это не так, как работает функция игнорирования SVN.svn:global-ignores
. Требуется SVN 1.8 (июнь 2013 г.):svn:ignore
, за исключением того, что использует функцию SVN 1.8 "inherited properties".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 (используемая в их системе меню Windows Explorer) изначально вводила меня в заблуждение - я не знал, какое значение имеет меню Игнорировать "Добавить рекурсивно", "Добавить *" и "Добавить". Надеюсь, что в этом сообщении объясняется, как функция Игнорировать связана с функцией SVN Properties. Тем не менее, я предлагаю использовать командную строку для установки игнорируемых файлов, чтобы вы могли понять, как это работает, вместо использования графического интерфейса, и только с помощью графического интерфейса для управления свойствами после удобного использования командной строки.
Команда svn status
скроет проигнорированные файлы (то есть файлы, соответствующие шаблону RGA global-ignores
), или сопоставляет шаблон исходного родительского каталога svn:ignore
или соответствует любому шаблону anceor 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
Наконец, commit,
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" .
Источник: Блог Karsten - Установите svn: ignore для нескольких файлов из командной строки
Я нашел статью .svnignore Пример для Java.
Пример:.svnignore для Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
И после этого:
svn propset svn:ignore -F .svnignore .
Примеры для .gitignore. Вы можете использовать для своего .svnignore
Как никто, кажется, не упомянул об этом...
svn propedit svn:ignore .
Затем отредактируйте содержимое файла, чтобы указать шаблоны для игнорирования, выйти из редактора, и все готово.
При использовании propedit убедитесь, что у вас нет конечных пробелов, так как это приведет к тому, что файл будет исключен из списка игнорирования.
Они автоматически вставлены, если вы используете tab-autocomplete в linux для создания файла, чтобы начать с:
svn propset svn:ignore 'file1
file2' .
Другое решение:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
или по строке
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Что он делает:
Кроме того, если вы используете Tortoise SVN, вы можете сделать это:
Более читаемая версия bkbilly answer:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Что он делает:
svn status
расскажет вам, какие файлы не находятся в SVN, а также то, что изменилось.
Посмотрите на свойства SVN для свойства ignore.
Для всех вещей SVN требуется Красная книга.
Вы также можете установить глобальный шаблон игнорирования в файле конфигурации SVN.
Добавление каталога в subversion и игнорирование содержимого каталога
svn propset svn:ignore '\*.*' .
или
svn propset svn:ignore '*' .
Используйте команду svn status на рабочей копии, чтобы показать статус файлов, файлы, которые еще не находятся под управлением версиями (и не игнорируются), будут рядом с ними. p >
Что касается игнорирования файлов, вам необходимо отредактировать свойство svn: ignore, прочитайте главу "Игнорирование неверсированных элементов в svnbook" в http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html, В книге также описано больше об использовании статуса svn.
SVN ignore
прост в управлении в TortoiseSVN. Откройте TortoiseSVN, щелкните правой кнопкой мыши по меню файлов и выберите "Добавить", чтобы игнорировать список.
Это добавит файлы в свойство svn:ignore
.
Когда мы проверяем файлы, то те файлы, которые соответствуют svn:ignore
, будут игнорироваться и не будут фиксироваться.
В проекте Visual Studio мы добавили следующие файлы для игнорирования:
bin obj
*.exe
*.dll
*.pdb
*.suo
Мы управляем исходным кодом в SVN Comparetrap, используя этот метод успешно
Что сработало для меня:
Как игнорировать файлы в Subversion?
1. В проводнике щелкните правой кнопкой мыши имя папки проекта SVN
.
2.Нажмите "SVN Commit..."
3. Появится окно "коммит"
4.Нажмите правой кнопкой мыши папку/файл, который вы хотите игнорировать
5.Нажмите Добавить, чтобы игнорировать список
.
6. Выберите папку/файл
7. Внесите "изменение свойства" в SVN
Кроме того, как мне найти файлы, которые не находятся под контролем версий?
После шага 3 выше нажмите "Показать неверсионные файлы"