Как мне игнорировать каталог с SVN? - PullRequest
744 голосов
/ 22 сентября 2008

Я только начал использовать SVN, и у меня есть каталог кеша, который мне не нужен под контролем исходного кода. Как я могу игнорировать весь каталог / папку с SVN?

Я использую Версии и TextMate в OS X и командной строке.

Ответы [ 23 ]

785 голосов
/ 22 сентября 2008

Установить свойство svn:ignore родительского каталога:

svn propset svn:ignore dirname .

Если вам нужно игнорировать несколько вещей, разделите их символами новой строки в значении свойства. В этом случае проще изменить значение свойства с помощью внешнего редактора:

svn propedit svn:ignore .
402 голосов
/ 22 сентября 2008

Вот пример структуры каталогов:

\project
    \source
    \cache
    \other

Находясь в project, вы видите, что ваш каталог кэша не добавлен и отображается как таковой.

> svn st
M  source
?  cache

Чтобы установить свойство игнорирования, выполните

svn propset svn: игнорировать кеш.

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

Чтобы проверить, какие свойства установлены:

> svn proplist
Properties on '.':
  svn:ignore

Чтобы увидеть значение svn:ignore:

> svn propget svn:ignore
cache

Чтобы удалить ранее установленные свойства:

svn propdel svn:ignore
129 голосов
/ 08 мая 2009

Важно отметить:

На командной строке вы не можете использовать

svn add *

Это также добавит игнорируемые файлы, потому что командная строка расширяется * и поэтому svn add считает, что вы хотите, чтобы все файлы, которые будут добавлены. Поэтому используйте это:

svn add --force .
80 голосов
/ 30 октября 2009

Поскольку я потратил некоторое время, пытаясь заставить это работать, следует отметить, что если файлы уже существуют в SVN, вам необходимо svn delete их, а затем отредактировать свойство svn:ignore.

Я знаю, что это кажется очевидным, но они продолжали появляться как ? в моем svn status списке, когда я думал, что это будет просто игнорировать их локально.

69 голосов
/ 22 сентября 2008

Чтобы немного расширить, если вы делаете это с помощью инструмента командной строки svn, вам нужно набрать:

svn propedit svn:ignore path/to/dir

, который откроет ваш текстовый редактор по вашему выбору, затем наберите '*', чтобы игнорировать все внутри него, и сохраните + выход - это будет включать в себя сам каталог в SVN, но игнорировать все файлы внутри него, чтобы игнорировать каталог , используйте путь к родителю, а затем введите имя каталога в файле. После сохранения запустите обновление ('svn up') и проверьте соответствующий путь.

28 голосов
/ 22 сентября 2008

Установить свойство svn:ignore в родительском каталоге:

$ cd parentdir
$ svn ps svn:ignore . 'cachedir'

Это перезапишет любое текущее значение svn:ignore. Вы редактируете значение с помощью:

$ svn pe svn:ignore .

Который откроет ваш редактор. Вы можете добавить несколько шаблонов, по одному на строку.

Вы можете просмотреть текущее значение с помощью:

$ svn pg svn:ignore .

Если вы используете графический интерфейс, для этого должна быть опция меню.

20 голосов
/ 13 сентября 2011

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


Когда папки уже находятся под контролем версий

После svn import и svn co файлов, что мы обычно делаем в первый раз.

Весь кэш времени выполнения, папки вложений будут находиться под контролем версий. поэтому перед svn ps svn: ignore нам нужно удалить его из хранилища.

С версией SVN 1.5 выше мы можем использовать svn del --keep-local your_folder, но для более ранней версии мое решение:

  1. svn export чистая копия ваших папок (без .svn скрытой папки)
  2. svn del локальный и репозиторий,
  3. svn ci
  4. Скопируйте обратно папки
  5. Do svn st и подтверждение, что папки помечены как '?'
  6. Теперь мы можем сделать SVN PS в соответствии с решениями

Когда нам нужно игнорировать более одной папки

  • В одном каталоге у меня есть две папки, которые нужно установить как svn:ignore
  • Если мы установим один, другой будет удален.
  • Тогда нам интересно, нам нужно svn pe

svn pe потребуется отредактировать текстовый файл, и вы можете использовать эту команду, если требуется, чтобы настроить текстовый редактор, используя vi :

export SVN_EDITOR=vi
  1. С помощью "o" вы можете открыть новую строку
  2. Введите все имена папок, которые вы хотите игнорировать
  3. Нажать клавишу «esc», чтобы выйти из режима редактирования.
  4. Введите ": wq", затем нажмите Введите , чтобы сохранить и выйти

Файл выглядит примерно так:

runtime
cache
attachments
assets
19 голосов
/ 27 июня 2013

Сначала удалите ...

Если ваш каталог foo уже находится под контролем версий, сначала удалите его с помощью:

svn rm --keep-local foo

... затем игнорировать:

svn propset svn:ignore foo .
12 голосов
/ 17 ноября 2010

... и если вы хотите игнорировать более одного каталога (скажем, build/ temp/ и *.tmp файлов), вы можете сделать это в два этапа (игнорировать первый и редактировать свойства игнорирования (см. Другие ответы здесь) или можно написать что-то вроде

svn propset svn:ignore "build
temp
*.tmp" .

в командной строке.

11 голосов
/ 22 сентября 2008

Если вы используете определенный клиент SVN TortoiseSVN , то при фиксации у вас есть возможность щелкнуть правой кнопкой мыши по элементам и выбрать «Добавить в список игнорирования».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...