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

Думаю, я нашел хороший компромисс, который позволит вам создать следующую структуру:

/ #root
|- data/
|  |- resource1
|  |- [...]
|- src/
|  |- mypackage/
|  |  |- __init__.py
|  |  |- [...]
|- setup.py

Вы должны установить данные как package_data, чтобы избежать проблем, описанных в ответе samplebias, но для того, чтобы mantain структуру файла, которую вы должны добавить в свой setup.py:

try:
    os.symlink('../../data', 'src/mypackage/data'
    setup(
        ...
        package_data = {'mypackage': ['data/*']}
        ...
    )
finally:
    os.unlink('src/mypackage/data')

Таким образом мы создаем соответствующую структуру «как раз вовремя» и организуем наше исходное дерево.

Для доступа к таким файлам данных в вашем коде вы просто используете:

data = resource_filename(Requirement.parse("main_package"), 'mypackage/data')

Мне все еще не нравится указывать «mypackage» в коде, так как данные могут не иметь ничего общего с этим модулем, но я думаю, что это хороший компромисс.

746
задан Peter Mortensen 24 November 2015 в 19:43
поделиться

11 ответов

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

svn propset svn:ignore dirname .

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

svn propedit svn:ignore .
787
ответ дан Ben 24 November 2015 в 19:43
поделиться

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

2
ответ дан Chris Marasti-Georg 24 November 2015 в 19:43
поделиться

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

11
ответ дан Peter Mortensen 24 November 2015 в 19:43
поделиться

Для расширения немного при выполнении этого с svn инструментом командной строки Вы хотите ввести:

svn propedit svn:ignore path/to/dir

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

70
ответ дан Greg 24 November 2015 в 19:43
поделиться

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

\project
    \source
    \cache
    \other

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

> svn st
M  source
?  cache

Для установки проигнорировать свойства сделайте

svn propset svn:ignore кэш.

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

Для проверки, какие свойства установлены:

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

Для наблюдения значения [1 110]:

> svn propget svn:ignore
cache

Для удаления свойств ранее набор:

svn propdel svn:ignore
404
ответ дан Peter Mortensen 24 November 2015 в 19:43
поделиться

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

Относятся к этот страница в руководстве Подрывной деятельности для больше на свойствах.

3
ответ дан The Digital Gabeg 24 November 2015 в 19:43
поделиться

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

3
ответ дан harpo 24 November 2015 в 19:43
поделиться

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

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

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

$ svn pe svn:ignore .

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

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

$ svn pg svn:ignore .

при использовании GUI должен быть пункт меню сделать это.

28
ответ дан Frank Szczerba 24 November 2015 в 19:43
поделиться

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

1
ответ дан Joe Skora 24 November 2015 в 19:43
поделиться

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

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

svn add *

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

svn add --force .
130
ответ дан 22 November 2019 в 21:26
поделиться

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

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

80
ответ дан 22 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: