23 ответов:
установить
svn:ignore
свойство родительского каталога:svn propset svn:ignore dirname .
Если у вас есть несколько вещей, которые нужно игнорировать, разделите новыми строками в значении свойства. В этом случае легче изменить значение свойства с помощью внешнего редактора:
svn propedit svn:ignore .
вот пример структуры каталогов:
\project \source \cache \other
, когда в
project
вы видите, что ваш каталог кэша не добавляется и отображается как таковой.> svn st M source ? cache
чтобы установить свойство ignore, выполните
svn propset svn: игнорировать кэш .
здесь
svn:ignore
- это имя свойства, которое вы устанавливаете,cache
- это значение свойства, а.
- это каталог, в котором вы устанавливаете это свойство. Это должно быть родительский каталогcache
каталог, который нуждается в свойстве.чтобы проверить, какие свойства установлены:
> svn proplist Properties on '.': svn:ignore
чтобы увидеть значение
svn:ignore
:> svn propget svn:ignore cache
удалить ранее установленные свойства:
svn propdel svn:ignore
важно отметить:
в командной строке, вы не можете использовать
svn add *
это также добавит игнорируемые файлы, потому что командная строка расширяется
*
и поэтомуsvn add
считает, что вы хотите, чтобы все файлы были добавлены. Поэтому используйте этот код:svn add --force .
поскольку я потратил некоторое время, пытаясь заставить это работать, следует отметить, что если файлы уже существуют в SVN, вам нужно
svn delete
их, а затем редактироватьsvn:ignore
собственность.Я знаю, что кажется очевидным, но они продолжали появляться как
?
в своемsvn status
список, когда я думал, что он будет просто игнорировать их локально.
чтобы немного расширить, если вы делаете это с помощью инструмента командной строки svn, вы хотите ввести:
svn propedit svn:ignore path/to/dir
который откроет ваш текстовый редактор по выбору, затем введите"*", чтобы игнорировать все внутри него, и сохраните+quit - это будет включать в себя сам каталог в svn, но игнорировать все файлы внутри него, игнорировать каталог, использовать путь родителя, а затем введите имя каталога в файле. После сохранения запустите обновление ('svn up'), а затем установите соответствующий флажок путь.
установить
svn:ignore
свойство в Родительском каталоге:$ cd parentdir $ svn ps svn:ignore . 'cachedir'
это перезапишет любое текущее значение
svn:ignore
. Вы редактируете значение с помощью:$ svn pe svn:ignore .
который откроет ваш редактор. Вы можете добавить несколько шаблонов, по одному на строку.
вы можете просмотреть текущее значение с:
$ svn pg svn:ignore .
если вы используете графический интерфейс должен быть пункт меню для этого.
Спасибо за все вклады выше. Я просто хотел бы поделиться некоторой дополнительной информацией из моего опыта, игнорируя файлы.
когда папки уже находятся под контролем версий
после svn import и svn co файлы, что мы обычно делаем в первый раз.
все кэш времени выполнения, папки вложений будут находиться под контролем версий. Итак, перед svn ps svn: игнорировать, нам нужно удалить его из репозитория.
С SVN версии 1.5 выше, мы можем использовать
svn del --keep-local your_folder
, но для более ранней версии, мое решение:
- экспорт svn чистая копия ваших папок (без
.svn
скрытая папка)- svn del локальный и репозиторий,
- svn ci
- скопировать обратно папки
- Do svn st и подтвердите, что папки помечены как '?-
- теперь мы можем сделать svn ps согласно решения
когда нам нужно более одной папки, чтобы быть проигнорированы
- в одном каталоге у меня есть две папки, которые нужно установить как
svn:ignore
- если мы установим один, другой будет удален.
- тогда мы удивляемся, что нам нужно svn pe
svn pe
нужно отредактируйте текстовый файл, и вы можете использовать эту команду, если требуется, чтобы установить текстовый редактор с помощью vi:export SVN_EDITOR=vi
- С помощью "o" вы можете открыть новую строку
- введите все имена папок, которые вы хотите игнорировать
- нажмите клавишу "esc", чтобы выйти из режима редактирования
- введите ":wq " затем нажмите Enter сохранить и выйти
файл выглядит примерно так:
runtime cache attachments assets
сначала удалите его...
если ваш каталог
foo
уже находится под контролем версий, удалите его сначала с помощью:svn rm --keep-local foo
...затем игнорировать:
svn propset svn:ignore foo .
...и если вы хотите игнорировать более одного каталога (скажем
build/
temp/
и*.tmp
файлы), вы можете сделать это в два этапа (игнорируя первый и редактировать игнорировать свойства (см. другие ответы здесь) или можно написать что-то вродеsvn propset svn:ignore "build temp *.tmp" .
в командной строке.
Если вы используете конкретный клиент SVN TortoiseSVN, затем при фиксации у вас есть возможность щелкнуть правой кнопкой мыши элементы и выбрать "Добавить в список игнорирования".
команда игнорировать несколько записей немного сложнее и требует обратной косой черты.
svn propset svn:ignore "cache\ tmp\ null\ and_so_on" .
эта команда будет игнорировать все, что им
cache
,tmp
,null
иand_so_on
в текущем каталоге.
У меня были проблемы с получением вложенных каталогов для игнорирования; верхний каталог, который я хотел игнорировать, не будет отображаться с "статусом svn", но все субдиры сделали это. Это, вероятно, самоочевидно для всех остальных, но я думал, что поделюсь этим:
пример:
/ trunk
/ trunk / cache
/ trunk / cache / subdir1
/ trunk / cache / subdir2
cd /trunk svn ps svn:ignore . /cache cd /trunk/cache svn ps svn:ignore . * svn ci
Bash oneliner для нескольких игнорирует:
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
Если ваш каталог проекта называется / Project, а ваш каталог кэша называется /Project/Cache, то вам нужно установить свойство subversion на /Project. Имя свойства должно быть" svn:ignore", а значение свойства - "Cache".
смотрите этой страница в руководстве Subversion для получения дополнительной информации о свойствах.
ответ Джейсона сделает трюк. Однако, вместо того, чтобы установить свойство SVN:игнорировать "."в каталоге кэша вы можете включить "кэш" в родитель каталог svn: игнорировать свойство, в случае, если каталог кэша не всегда присутствует. Я делаю это на нескольких "одноразовых" папках.
"спасибо" svn для такого отвратительного, фиктивного и трудного способа игнорировать файлы.
поэтому я написал скрипт svn-игнорировать-все:
#!/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-игнорировать. Я думаю, что 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 БУДЕТ ИГНОРИРОВАТЬ:
- это приведет к удалению файлов из репозитория, но сохранить каталог под управлением SVN:
svn delete --keep-local path/directory_to_keep/*
- затем установите игнорировать каталог (и все содержимое):
svn propset svn: игнорировать " * " путь / directory_to_keep
Если вы используете интерфейс для SVN, например TortoiseSVN, или какую-то интеграцию IDE, в том же меню должна быть опция ignore, что и операция commit/add.
установите svn: ignore свойства. Большинство инструментов UI svn имеют способ сделать это, а также обсуждение командной строки в ссылке.
Так как вы используете версии это на самом деле очень легко:
- просмотр извлеченной копии
- щелкните каталог, чтобы игнорировать
- в поле "игнорировать" щелкните правой кнопкой мыши изменить
- тип *.* игнорировать все файлы (или *.jpg для просто JPG файлы, и т. д.)
следите за своими косыми чертами тоже. Я обнаружил, что в том числе
images/*
в моем файле настроек игнорирования не игнорировал./images/
. Когда я бежалsvn status -u
но? images
. Итак, я просто изменил параметр игнорировать на простоimages
, без косых черт. Запустил проверку состояния,и это очистило его.
решить затмение следующим образом:
прежде всего, выполните синхронизацию вашей папки с проектом:
потеряв много времени на поиски того, как сделать это простое занятие, я решил опубликовать его не трудно было найти достойное объяснение.
сначала пусть образец структуры
$ svn st ? проект / магистраль / цель ? проект/багажник/мой_файл.x
1-сначала настроить редактор, в mycase vim экспорт SVN_EDITOR=vim
2 - "svn propedit svn: ignore project / trunk/" откроет новый файл, и вы можете добавить свои файлы и подкаталог в US case type "цель" сохранить и закрыть файл и работает
$ svn st ? проект/багажник/мой_файл.x
спасибо.
Comments