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

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

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

Ответы

Ответ 1

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

svn propset svn:ignore dirname .

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

svn propedit svn:ignore .

Ответ 2

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

\project
    \source
    \cache
    \other

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

> svn st
M  source
?  cache

Чтобы установить свойство ignore, do

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

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

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

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

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

> svn propget svn:ignore
cache

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

svn propdel svn:ignore

Ответ 3

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

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

svn add *

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

svn add --force .

Ответ 4

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

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

Ответ 5

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

svn propedit svn:ignore path/to/dir

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

Ответ 6

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

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

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

$ svn pe svn:ignore .

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

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

$ svn pg svn:ignore .

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

Ответ 7

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


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

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

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

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

  • svn экспортирует чистую копию ваших папок (без .svn скрытой папки)
  • svn локальный и репозиторий,
  • svn ci
  • Скопировать назад папки
  • Сделайте svn st и подтвердите, что папки отмечены как "?"
  • Теперь мы можем сделать svn ps в соответствии с решениями

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

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

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

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

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

runtime
cache
attachments
assets

Ответ 8

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

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

svn rm --keep-local foo

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

svn propset svn:ignore foo .

Ответ 9

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

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

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

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

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

Пример:

/багажник

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

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

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

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci

Ответ 13

Bash oneliner для нескольких игнорирования:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"

Ответ 14

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

Подробнее о свойствах см. в этой странице в руководстве Subversion.

Ответ 15

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

Ответ 16

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

Итак, я написал script 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 - все должно быть похоже на 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-checkout множеством случайных файлов. Когда это время для фиксации, я перемещаю эти файлы в "старый" подкаталог и говорю svn игнорировать "старый".

Ответ 17

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

  • это приведет к удалению файлов из репозитория, но сохраните каталог под управлением SVN:

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

  1. затем установите для игнорирования каталога (и всего содержимого):

svn propset svn: ignore "*" path/directory_to_keep

Ответ 18

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

Ответ 19

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

Ответ 20

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

  • Просмотрите распечатанную копию
  • Щелкните по каталогу, чтобы игнорировать
  • В поле "Игнорировать" справа нажмите "Изменить"
  • Введите *. *, чтобы игнорировать все файлы (или *.jpg только для файлов jpg и т.д.).

Ответ 21

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

Ответ 22

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

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

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

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

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

Команда

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

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

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

Team- > добавить

до svn:ignore, а затем я подтвержу первый вариант в окне подтверждения.

Ответ 23

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

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

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

1 - сначала настройте редактор, в моем случае vim экспорт SVN_EDITOR = vim

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

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

спасибо.