«svn add *» добавляет даже те файлы, которые игнорируются - PullRequest
8 голосов
/ 05 ноября 2010

Я использую svn add * для добавления файлов в svn, и он добавляет файл конфигурации, который наверняка добавлен для игнорирования.

lyuba@lyuba-laptop:/workspace/project$ svn propget svn:ignore
.sass-cache
config.js

Что может вызвать проблему?

Ответы [ 5 ]

10 голосов
/ 05 ноября 2010

В UNIX и Linux, если вы скажете

svn add *

Тогда оболочка раскроет все файлы в каталоге, и программа увидит то же, что и при наборе

svn add file-a.txt file-b.txt file-c.txt

и т.д..Это означает, что команда Subversion считает, что вы явно указали файл для добавления.В этом случае он будет добавлен, хотя свойство svn:ignore может быть установлено.

Из документации svn:ignore (мой акцент):

Subversion использует шаблоны игнорирования, чтобы определить, какие файлы не следует помещать в систему управления версиями как часть рекурсивного добавления большего размера или операции импорта.

8 голосов
/ 12 ноября 2015

Супер старый вопрос, но я столкнулся с этой проблемой только сейчас, и решение, которое я нашел, здесь не указано.Ответ Эдриана Смита на правильном пути.Я предполагаю, что документы и сама SVN видели много обновлений за 5 лет.Вот что я нашел в документах SVN

Даже если установлен svn:ignore, вы можете столкнуться с проблемами, если в команде используете подстановочные знаки оболочки.Подстановочные знаки оболочки раскладываются в явный список целей до того, как Subversion работает с ними, поэтому запуск svn SUBCOMMAND * аналогичен запуску svn SUBCOMMAND file1 file2 file3 ….В случае команды svn add это имеет эффект, аналогичный передаче параметра --no-ignore.Поэтому вместо использования подстановочного знака используйте svn add --force ., чтобы выполнить массовое планирование неверсионных вещей для добавления.Явная цель гарантирует, что текущий каталог не будет пропущен из-за того, что он уже находится под контролем версий, а опция --force заставит Subversion сканировать этот каталог, добавляя неверсионные файлы, сохраняя при этом свойство svn:ignore и global-ignores переменная конфигурации во время выполнения.Обязательно укажите параметр --depth files для команды svn add, если вы не хотите полностью рекурсивного сканирования добавляемых объектов.

Короткая версия использует svn add --force . Это работаетидеально для меня.

1 голос
/ 06 апреля 2016

Используйте эту команду вместо svn add --force *:

svn add --force ./

В этом случае svn анализирует все файлы в каталоге и считает игнорируемые файлы, но когда вы используете *, вы явно указываете svn добавитьвсе файлы.

1 голос
/ 07 мая 2015

Я обнаружил, что этот вопрос содержит очень хорошее решение. Поскольку ответ на самом деле не отвечает на вопрос, я не думаю, что он дублирует. Вкратце используйте возможности инструментов Unix (работает с Cygwin на Windows):

svn status | grep '?' | sed 's/^.* /svn add /' | bash

0 голосов
/ 05 ноября 2010

Вы пытались зафиксировать config.js, чтобы увидеть, действительно ли он игнорируется?Я думаю, что если вы специально скажете svn добавить файл в систему управления версиями, он проигнорирует игнорирование.

...