Как мне игнорировать каталог с SVN?

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

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

22.09.2008 16:55:59
На этот же вопрос ответили здесь [папка игнорирования извлечения SVN] [1] [1]: stackoverflow.com/questions/192824/svn-checkout-ignore-folder
mloskot 3.12.2011 15:21:40
Возможный дубликат Как игнорировать файлы в Subversion? (Меня не слишком волнует, в каком направлении идет дубликат; ни один набор ответов явно не лучше другого.)
Jeffrey Bosboom 9.09.2016 18:35:28
23 ОТВЕТА
РЕШЕНИЕ

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

svn propset svn:ignore dirname .

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

svn propedit svn:ignore .
794
15.01.2015 15:52:12
@ Кубер: Ваша проблема в том, что расширение оболочки не знает о свойствах svn: ignore. Таким образом, использование '*' в качестве параметра explicityl передает tmp команде commit. Попробуйте что-то вроде 'svn commit -m "Больше акцентов".
MarkusSchaber 6.05.2011 10:58:48
Спасибо за ответ. Пико в качестве редактора: svn propedit svn: игнорировать. --editor-cmd pico
hade 15.09.2011 08:43:05
Примечание: это не будет работать, если каталог уже находится в "svn". svn rm --keep-local dirnameпервый. (Мой вывод статистики SVN был огромным, и я некоторое время врезался в это.)
Erik Aronesty 2.05.2012 16:24:28
Если вы хотите игнорировать более одного файла / папки, добавьте все их имена в текстовый файл, по одной строке каждый, и используйте следующий вариант:svn propset svn:ignore -F file.txt .
petervaz 7.08.2012 19:22:24
Будьте осторожны, что вы установили, svn:ignoreа не svn::ignoreкак я. Вы можете установить произвольные свойства, поэтому последнее будет установлено ОК, и вы сможете просматривать и редактировать свойство, но оно не заставит SVN игнорировать список файлов, которые вы перечислили.
Richard Turner 8.08.2012 14:34:03

Установите свойство svn: ignore . Большинство инструментов пользовательского интерфейса svn имеют способ сделать это, а также обсуждение командной строки в ссылке.

1
22.09.2008 16:56:45

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

svn propedit svn:ignore path/to/dir

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

71
22.09.2008 17:00:43
Очень хороший момент, спасибо. Все остальные ответы пропущены в случае вложенных каталогов. Таким образом, в приведенном выше примере (работающем) вы затем вводите текст в редакторе ignored_directory (который по предположению на один уровень ниже пути / к / каталогу). Это не будет работать, хотя: svn propedit svn: игнорировать. и затем введите путь к / dir / ignored_directory в редакторе. IOW: SVN сопоставляет объекты на один уровень за раз.
greenoldman 10.03.2010 07:43:39

Если вы используете внешний интерфейс для SVN, такой как TortoiseSVN, или какая-то интеграция с IDE, в том же меню должна быть опция игнорирования, как и операция фиксации / добавления.

2
22.09.2008 17:01:02

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

12
24.11.2015 19:30:24

Если каталог вашего проекта называется / Project, а каталог кэша называется / Project / Cache, то вам нужно установить свойство subversion в / Project. Имя свойства должно быть "svn: ignore", а значение свойства должно быть "Cache".

Обратитесь к этой странице в руководстве Subversion для получения дополнительной информации о свойствах.

3
22.09.2008 17:01:49

Ответ Джейсона сделает свое дело. Однако вместо установки svn: ignore на "." в каталоге cache вы можете захотеть включить «cache» в свойство svn: ignore родительского каталога, если каталог кэша присутствует не всегда. Я делаю это на нескольких «одноразовых» папках.

3
22.09.2008 17:02:22

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

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

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

$ svn pe svn:ignore .

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

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

$ svn pg svn:ignore .

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

30
22.09.2008 17:02:37
svn ps svn:ignore . 'cachedir'результаты в cachedir is not under version control. менялся svn ps svn:ignore 'cachedir' .на работу
DiCaprio 23.04.2015 11:48:40

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

\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
406
24.11.2015 19:35:45
Здесь один хитрый момент, на который я наткнулся. Убедитесь, что вы не добавляете косую черту в dirname. Например, при вводе svn propset svn:ignore dirname, если вы разрешите оболочке (bash) заполнить для вас dirname, он добавит этот косой черты, оставив вас с командой svn propset svn:ignore dirname/, которая не приведет к игнорированию папки. По крайней мере, это был мой опыт.
David Weinraub 9.04.2012 06:57:36
Каталог 'cache' по-прежнему будет указан в 'svn st'. Есть ли способ убрать его из вида? (без удаления с диска)
Tom Brito 1.08.2016 20:45:58

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

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

svn add *

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

svn add --force .
131
24.11.2015 19:36:30
делайте точно так, как сказал @binco: svn add --force *НЕ работает. Используйте точку, а не звезду.
manuell 1.06.2015 16:31:26

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

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

80
24.11.2015 19:37:33
Не забудьте использовать опцию --keep-local при удалении файлов, если вы просто хотите игнорировать их, а не удалять.
Dylan Holmes 29.04.2014 20:00:00

У меня были проблемы с тем, чтобы игнорировать вложенные каталоги; верхний каталог, который я хотел игнорировать, не показывался бы с 'svn status', но все подкаталоги делали. Это, наверное, самоочевидно для всех остальных, но я решил поделиться этим:

ПРИМЕР:

/хобот

/ Багажник / кэш

/ Багажник / кэш / subdir1

/ Багажник / кэш / subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
5
13.09.2011 04:01:05

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

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

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

12
4.12.2011 21:22:13

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

svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .

Эта команда будет игнорировать все с именем cache, tmp, nullи and_so_onв текущем каталоге.

8
29.11.2017 12:33:28
И просто уточнить: обратный слеш здесь не является особенностью svn; это просто способ ввода многострочной строки в оболочке. Вы также можете использовать редактор и просто написать несколько строк.
sleske 25.10.2011 09:20:09
Обратная косая черта не требуется для bash. bash достаточно умен, чтобы знать, что "открыто, а не обрабатывать строку. Все, что вам нужно сделать, это нажать enter после cache, tmp и null. Вы увидите, что bash меняет запрос на>, чтобы вы знали, что вы все еще вводите команду. Альтернативный вариант - начать вводить команду (svn), затем нажать esc, затем v. Это позволит вам ввести команду в редакторе. Нажмите ZZ, когда закончите, чтобы выполнить команду. Если вы передумали и не хочешь казнить, тогда: q !.
Michael Potter 23.06.2012 20:52:45
svn propset svn:ignore -F .ignorethesefiles .позволит вам использовать файл. И как уже упоминалось, вы всегда должны пропедить.
Gerard ONeill 17.03.2015 19:15:53

Bash oneliner для множественного игнорирования:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
4
24.11.2015 19:38:13

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


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

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

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

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

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

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

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

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

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

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

runtime
cache
attachments
assets
21
24.11.2015 19:42:02
Вы также можете использовать svn propset svn:ignore -F .ignorethesefiles ., который будет использовать содержимое файла. Мне нравится держать это, чтобы вы знали, что игнорируется. Редактирование требует последующей установки.
Gerard ONeill 17.03.2015 19:13:31

Поскольку вы используете Версии, это действительно очень просто:

  • Просмотрите свою извлеченную копию
  • Нажмите на каталог, чтобы игнорировать
  • В поле «Игнорировать» справа щелкните «Изменить».
  • Введите *. *, Чтобы игнорировать все файлы (или * .jpg только для файлов jpg и т. Д.)
1
24.07.2012 01:45:28

Следите за своими косыми чертами. Я обнаружил, что в том числе images/*в моем файле настроек игнорирования не игнорировать ./images/. Когда я побежал, svn status -uон все еще показал ? images. Итак, я просто изменил настройку игнорирования на просто images, без косых черт. Запустил проверку статуса, и это очистило его.

1
24.09.2012 15:22:50

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

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

svn rm --keep-local foo

... тогда игнорируй

svn propset svn:ignore foo .
20
27.06.2013 15:16:41

"Спасибо" svn за такой отвратительный, поддельный и трудный способ игнорировать файлы.

Поэтому я написал скрипт svn-ignore-all :

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

Также, чтобы игнорировать определенный список файлов / путей, мы можем использовать этот вариант svn-ignore . Я думаю, что svn-ignore-all действительно должно быть похоже на xargs svn-ignore.

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

Еще одна вещь: я склонен загрязнять мои svn-проверки множеством случайных файлов. Когда приходит время коммитить, я перемещаю эти файлы в «старый» подкаталог и говорю svn игнорировать «старый».

4
8.10.2013 06:35:14
Привет, Сэм, это хороший сценарий. В моей голове всплыл вопрос: возможно, проблема в том, что игнорирование целой папки, являющейся частью репозитория, не работает, поэтому мы в итоге получаем «?» файлы, которые в основном являются измененными файлами в папках, которые мы добавили в список игнорируемых? Мне просто интересно, есть ли способ обойти ваш сценарий, так как было бы утомительно запускать его все время. Вы?
SquareCat 15.09.2014 19:41:18
нет, я действительно не использую это! просто попробуйте очистить мои файлы
Sam Watkins 17.09.2014 13:04:27

Потеряв много времени в поисках того, как сделать это простое занятие, я решил опубликовать, что не составило труда найти достойное объяснение.

Сначала позвольте структуре образца

$ svn st? проект / ствол / цель? проекта / багажник / myfile.x

1 - сначала настройте редактор, в mycase vim export SVN_EDITOR = vim

2 - «svn propedit svn: ignore project / trunk /» откроет новый файл, и вы можете добавить свои файлы и подкаталог в нашем случае. Тип «target» сохранить и закрыть файл и работает

$ svn st? проекта / багажник / myfile.x

Спасибо.

0
19.02.2014 20:08:44

Решено с Eclipse следующим образом:

Прежде всего, сделайте синхронизацию вашей папки с проектом:

команда -> синхронизировать

В следующем представлении, командном представлении, вы можете увидеть все ресурсы, которые вы можете зафиксировать на сервере SVN.

Итак, выберите папку ресурса, который вы хотите игнорировать, и затем вы можете игнорировать его, используя

команда -> добавить в svn:ignore.

После этого в окне подтверждения выберите первый вариант: «игнорировать по имени».

Например, если я хочу игнорировать целевую папку и их ресурсы .class, я выполню синхронизацию, и в представлении синхронизации я выберу целевую папку. После этого я выберу

Team-> Добавить

до svn:ignoreи после этого я буду подтвердить первый вариант в окне подтверждения.

1
10.07.2016 08:07:55

ДЕРЖАТЬ ДИРЕКТОРИИ, КОТОРЫЕ СВН БУДУТ ИГНОРИРОВАТЬ

  1. это удалит файлы из хранилища, но оставит каталог под контролем SVN:

svn delete --keep-local path / directory_to_keep / *

  1. затем установите, чтобы игнорировать каталог (и весь контент):

svn propset svn: игнорировать "*" путь / directory_to_keep

3
13.06.2015 22:39:36