Установите svn:ignore
свойство родительского каталога:
svn propset svn:ignore dirname .
Если вам нужно игнорировать несколько вещей, разделите их символами новой строки в значении свойства. В этом случае проще изменить значение свойства с помощью внешнего редактора:
svn propedit svn:ignore .
svn rm --keep-local dirname
первый. (Мой вывод статистики SVN был огромным, и я некоторое время врезался в это.)svn propset svn:ignore -F file.txt .
svn:ignore
а не svn::ignore
как я. Вы можете установить произвольные свойства, поэтому последнее будет установлено ОК, и вы сможете просматривать и редактировать свойство, но оно не заставит SVN игнорировать список файлов, которые вы перечислили. Установите свойство svn: ignore . Большинство инструментов пользовательского интерфейса svn имеют способ сделать это, а также обсуждение командной строки в ссылке.
Чтобы немного расширить, если вы делаете это с помощью инструмента командной строки svn, вам нужно набрать:
svn propedit svn:ignore path/to/dir
который откроет ваш текстовый редактор по вашему выбору, затем наберите '*', чтобы игнорировать все внутри него, и сохраните + quit - это будет включать в себя сам каталог в SVN, но игнорировать все файлы внутри него, чтобы игнорировать каталог, используйте Путь родителя, а затем введите имя каталога в файле. После сохранения запустите обновление ('svn up') и проверьте соответствующий путь.
Если вы используете внешний интерфейс для SVN, такой как TortoiseSVN, или какая-то интеграция с IDE, в том же меню должна быть опция игнорирования, как и операция фиксации / добавления.
Если вы используете определенный клиент SVN TortoiseSVN , то при фиксации у вас есть возможность щелкнуть правой кнопкой мыши по элементам и выбрать «Добавить в список игнорируемых».
Если каталог вашего проекта называется / Project, а каталог кэша называется / Project / Cache, то вам нужно установить свойство subversion в / Project. Имя свойства должно быть "svn: ignore", а значение свойства должно быть "Cache".
Обратитесь к этой странице в руководстве Subversion для получения дополнительной информации о свойствах.
Ответ Джейсона сделает свое дело. Однако вместо установки svn: ignore на "." в каталоге cache вы можете захотеть включить «cache» в свойство svn: ignore родительского каталога, если каталог кэша присутствует не всегда. Я делаю это на нескольких «одноразовых» папках.
Установите svn:ignore
свойство в родительском каталоге:
$ cd parentdir
$ svn ps svn:ignore . 'cachedir'
Это перезапишет любое текущее значение svn:ignore
. Вы редактируете значение с помощью:
$ svn pe svn:ignore .
Который откроет ваш редактор. Вы можете добавить несколько шаблонов, по одному в строке.
Вы можете просмотреть текущее значение с:
$ svn pg svn:ignore .
Если вы используете графический интерфейс, для этого должна быть опция меню.
svn ps svn:ignore . 'cachedir'
результаты в cachedir is not under version control
. менялся svn ps svn:ignore 'cachedir' .
на работуВот пример структуры каталогов:
\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
dirname
. Например, при вводе svn propset svn:ignore dirname
, если вы разрешите оболочке (bash) заполнить для вас dirname, он добавит этот косой черты, оставив вас с командой svn propset svn:ignore dirname/
, которая не приведет к игнорированию папки. По крайней мере, это был мой опыт. Важно отметить:
В командной строке вы не можете использовать
svn add *
Это также добавит игнорируемые файлы, потому что командная строка расширяется *
и, следовательно, svn add
считает, что вы хотите, чтобы все файлы были добавлены. Поэтому используйте это вместо:
svn add --force .
svn add --force *
НЕ работает. Используйте точку, а не звезду. Поскольку я потратил некоторое время, пытаясь заставить это работать, следует отметить, что если файлы уже существуют в SVN, вам необходимо svn delete
их отредактировать, а затем отредактировать svn:ignore
свойство.
Я знаю, что это кажется очевидным, но они продолжали появляться, как ?
в моем svn status
списке, когда я думал, что это будет просто игнорировать их локально.
У меня были проблемы с тем, чтобы игнорировать вложенные каталоги; верхний каталог, который я хотел игнорировать, не показывался бы с 'svn status', но все подкаталоги делали. Это, наверное, самоочевидно для всех остальных, но я решил поделиться этим:
ПРИМЕР:
/хобот
/ Багажник / кэш
/ Багажник / кэш / subdir1
/ Багажник / кэш / subdir2
cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
... и если вы хотите игнорировать более одной директории (скажем , build/
temp/
и *.tmp
файлы), вы можете либо сделать это в два этапа (игнорируя первый и редактировать игнорировать свойства (см другие ответы здесь) или один мог бы написать что - то вроде
svn propset svn:ignore "build
temp
*.tmp" .
в командной строке.
Команда игнорировать несколько записей немного сложна и требует обратной косой черты.
svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .
Эта команда будет игнорировать все с именем cache
, tmp
, null
и and_so_on
в текущем каталоге.
svn propset svn:ignore -F .ignorethesefiles .
позволит вам использовать файл. И как уже упоминалось, вы всегда должны пропедить. Bash oneliner для множественного игнорирования:
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
Спасибо за все вклады выше. Я просто хотел бы поделиться дополнительной информацией из моего опыта, игнорируя файлы.
Когда папки уже находятся под контролем версий
После svn import и svn co файлов, что мы обычно делаем в первый раз.
Весь кэш времени выполнения, папки вложений будут находиться под контролем версий. Итак, перед тем, как svn ps svn: ignore , нам нужно удалить его из хранилища.
С SVN версии 1.5 выше мы можем использовать svn del --keep-local your_folder
, но для более ранней версии мое решение:
- svn экспортирует чистую копию ваших папок (без
.svn
скрытой папки) - SVN Del Local и хранилище,
- SVN CI
- Скопируйте обратно папки
- Сделайте svn st и подтвердите, что папки помечены как '?'
- Теперь мы можем сделать SVN PS в соответствии с решениями
Когда нам нужно игнорировать более одной папки
- В одном каталоге у меня есть две папки, которые должны быть установлены как
svn:ignore
- Если мы установим один, другой будет удален.
- Тогда нам интересно, нам нужно SVN Pe
svn pe
Вам нужно будет отредактировать текстовый файл, и вы можете использовать эту команду, если требуется, чтобы настроить ваш текстовый редактор с помощью vi :
export SVN_EDITOR=vi
- С "о" вы можете открыть новую строку
- Введите все имена папок, которые вы хотите игнорировать
- Нажмите клавишу «esc», чтобы выйти из режима редактирования.
- Введите ": WQ", затем нажмите, Enterчтобы сохранить и выйти
Файл выглядит примерно так:
runtime
cache
attachments
assets
svn propset svn:ignore -F .ignorethesefiles .
, который будет использовать содержимое файла. Мне нравится держать это, чтобы вы знали, что игнорируется. Редактирование требует последующей установки. Поскольку вы используете Версии, это действительно очень просто:
- Просмотрите свою извлеченную копию
- Нажмите на каталог, чтобы игнорировать
- В поле «Игнорировать» справа щелкните «Изменить».
- Введите *. *, Чтобы игнорировать все файлы (или * .jpg только для файлов jpg и т. Д.)
Следите за своими косыми чертами. Я обнаружил, что в том числе images/*
в моем файле настроек игнорирования не игнорировать ./images/
. Когда я побежал, svn status -u
он все еще показал ? images
. Итак, я просто изменил настройку игнорирования на просто images
, без косых черт. Запустил проверку статуса, и это очистило его.
Сначала удалите это ...
Если ваш каталог foo
уже находится под контролем версий, сначала удалите его с помощью:
svn rm --keep-local foo
... тогда игнорируй
svn propset svn:ignore foo .
"Спасибо" 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 игнорировать «старый».
Потеряв много времени в поисках того, как сделать это простое занятие, я решил опубликовать, что не составило труда найти достойное объяснение.
Сначала позвольте структуре образца
$ svn st? проект / ствол / цель? проекта / багажник / myfile.x
1 - сначала настройте редактор, в mycase vim export SVN_EDITOR = vim
2 - «svn propedit svn: ignore project / trunk /» откроет новый файл, и вы можете добавить свои файлы и подкаталог в нашем случае. Тип «target» сохранить и закрыть файл и работает
$ svn st? проекта / багажник / myfile.x
Спасибо.
Решено с Eclipse следующим образом:
Прежде всего, сделайте синхронизацию вашей папки с проектом:
команда -> синхронизировать
В следующем представлении, командном представлении, вы можете увидеть все ресурсы, которые вы можете зафиксировать на сервере SVN.
Итак, выберите папку ресурса, который вы хотите игнорировать, и затем вы можете игнорировать его, используя
команда -> добавить в
svn:ignore
.
После этого в окне подтверждения выберите первый вариант: «игнорировать по имени».
Например, если я хочу игнорировать целевую папку и их ресурсы .class, я выполню синхронизацию, и в представлении синхронизации я выберу целевую папку. После этого я выберу
Team-> Добавить
до svn:ignore
и после этого я буду подтвердить первый вариант в окне подтверждения.
ДЕРЖАТЬ ДИРЕКТОРИИ, КОТОРЫЕ СВН БУДУТ ИГНОРИРОВАТЬ
- это удалит файлы из хранилища, но оставит каталог под контролем SVN:
svn delete --keep-local path / directory_to_keep / *
- затем установите, чтобы игнорировать каталог (и весь контент):
svn propset svn: игнорировать "*" путь / directory_to_keep