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

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

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

Ответы [ 23 ]

6 голосов
/ 14 июля 2011

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

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

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

5 голосов
/ 04 октября 2010

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

Пример:

/ багажник

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

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

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

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
4 голосов
/ 08 октября 2013

"Спасибо" 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 голосов
/ 05 сентября 2011

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

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
3 голосов
/ 14 июня 2015

, чтобы сохранить каталоги, которые SVN будет игнорировать:

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

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

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

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

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

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

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

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

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

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

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

1 голос
/ 10 марта 2014

Решено с помощью Затмение следующим образом:

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

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

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

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

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

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

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

Team-> добавить

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

1 голос
/ 24 сентября 2012

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

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