Відповіді:
(Цю відповідь було оновлено, щоб вона відповідала поведінці 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\configSoftware\Tigris.org\Subversion\Config\Miscellany\global-ignoresв HKLMі HKCU.~/.subversion/configsvn: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 вище натисніть "Показати неперевершені файли"