Відповіді:
(Цю відповідь було оновлено, щоб вона відповідала поведінці SVN 1.8 та 1.9)
У вас є 2 питання:
Під "ігнорованим файлом" я маю на увазі, що файл не відображатиметься у списках навіть як "неперевершений": ваш клієнт SVN буде робити вигляд, що файл взагалі не існує у файловій системі.
Проігноровані файли задаються "шаблоном файлів". Синтаксис і формат шаблонів файлів пояснюється в онлайн-документації SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Шаблони файлів у підривному режимі".
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
" застосовано у .
кореневому репо).
Тому, щоб застосувати список ігнорування рекурсивно, ви повинні використовувати 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.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
приховає ігноровані файли (тобто файли, які відповідають global-ignores
шаблону RGA , або відповідатимуть шаблону безпосереднього батьківського каталогу svn:ignore
або відповідатимуть шаблону будь-якого попереднього каталогу svn:global-ignores
.
Скористайтеся --no-ignore
опцією, щоб побачити перелічені файли. Проігноровані файли мають статус I
, а потім передають вихід, щоб grep
вони показували лише рядки, починаючи з "Я".
Команда така:
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 propedit svn:ignore .
і не налаштований текстовий редактор, ви отримаєте повідомлення про помилку із записом svn: E205007: жодна зі змінних оточення SVN_EDITOR, VISUAL або EDITOR не встановлена, і опція конфігурації 'editor-cmd' не встановлена. знайдено замість того, щоб відкрити редактор. Тож просто вкажіть --editor-cmd nano, як цеsvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
Використовуйте наступну команду, щоб створити список, який не знаходиться у файлах контролю версій.
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
svn status | awk "/^?/ {print \$2}" > ignoring.txt
.
svn pg svn:ignore . >> ignore.txt
після першої команди додати поточні ігнори до файлу.
Ви можете ігнорувати файл або каталог на зразок .gitignore. Просто створіть текстовий файл із списку каталогів / файлів, які ви хочете ігнорувати, та запустіть код нижче:
svn propset svn:ignore -F ignorelist.txt .
АБО якщо ви не хочете використовувати текстовий файл, ви можете зробити це так:
svn propset svn:ignore "first
second
third" .
Джерело: Блог Карстен - Встановіть svn: ігноруйте для декількох файлів з командного рядка
svn:ignore
командою (див. Stackoverflow.com/a/58380306/189518 )
Якщо ви використовуєте TortoiseSVN , клацніть правою кнопкою миші на файл, а потім виберіть TortoiseSVN / Додати до списку ігнорування . Це додасть файл / підстановку до svn:ignore
властивості.
svn:ignore
буде перевірено під час перевірки файлів, а відповідні файли будуть ігноровані. У мене є такий список ігнорування для проекту Visual Studio .NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Ви можете знайти цей список у контекстному меню за адресою TortoiseSVN / Properties .
Як ніхто, здається, не згадував про це ...
svn propedit 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
Під час використання propedit переконайтеся, що немає пробілів, оскільки це призведе до виключення файлу зі списку ігнорування.
Вони вставляються автоматично, якщо ви використовуєте вкладку-автозаповнення в 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, ви можете зробити це:
config
файл.
Більш прочитана версія відповіді bkbilly:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Що це робить:
Ви також можете встановити глобальний шаблон ігнорування у файлі конфігурації SVN.
svn status
підкаже, які файли відсутні у SVN, а також що змінилося.
Подивіться на властивості SVN для властивості ігнорування.
Для всіх речей SVN, Червону книгу потрібно прочитати.
Додавання каталогу до субверсії та ігнорування вмісту каталогу
svn propset svn:ignore '\*.*' .
або
svn propset svn:ignore '*' .
Використовуйте команду svn статус на робочій копії, щоб показати статус файлів, файли, які ще не знаходяться під контролем версій (і не ігноруються), матимуть знак питання поруч.
Що стосується ігнорування файлів, вам потрібно відредагувати властивість 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 з Порівняння
Що для мене спрацювало:
Як ігнорувати файли в Subversion?
1. У File Explorer, клацніть правою кнопкою миші на папці SVN проекту ім'я
2. Клацніть на "SVN присвятити ..."
3.З'явиться
вікно "фіксація". 3.
Правий клацніть папку / файл, який ви хочете ігнорувати.
5. Клацніть
на Додати, щоб ігнорувати список
6.Виберіть папку / файл
7.Виберіть "Властивість зміни" на SVN
Крім того, як знайти файли, які не знаходяться під контролем версій?
Після кроку 3 вище натисніть "Показати неперевершені файли"