iPhone: Хорошая практика для хранения моих сторонних актуальных библиотек?

Я хочу спросить о Ваших методах для хранения сторонних библиотек актуальными легко.

В моем проекте iPhone я использую довольно много третьего лица, освобождает (как TouchXML, JSON, RegexKit, YAJL, MGTwitterEngine...). Большинство из них хранится в GitHub и их версии, особенно MGTwitterEngine, изменитесь вполне быстро (из-за добавления новой опции, исправив ошибку, изменив в Сервере (как Твиттер) формат ответа...).

Иногда, я забываю обновлять (также не хотят изменять стабильную версию), затем, мой проект получает ошибки из-за устаревших библиотек.

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

Каков Ваш подход для этой задачи?

7
задан KONG 16 July 2010 в 04:36
поделиться

1 ответ

Вы заглядывали в git submodules?

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

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

git submodule add ssh://url/to/external/library.git local/path

Это должно сделать следующие шаги (взятые дословно из URL выше):

  • Клонирует подмодуль в текущий каталог и по умолчанию проверяет главную ветвь.
  • Добавляет путь клона подмодуля в файл .gitmodules и добавляет этот файл в индекс, готовый к фиксации.
  • Добавляет ID текущего коммита подмодуля в индекс, готовый к фиксации.

Затем вы можете использовать команду

git submodule update

для поддержания актуальности.

Также, в качестве побочного примечания, если вы делаете то же, что и я (например, вносите прямые изменения в репозиторий подмодуля), вам нужно перейти в каталог корневого репозитория подмодуля и зафиксировать эти изменения ПЕРВЫМИ перед фиксацией суперпроекта. Это связано с тем, что git отслеживает версии подмодулей (интеллектуально), поэтому если вы сначала зафиксируете суперпроект, вы будете хранить ссылку на изменения, которые не были зафиксированы в репозитории подмодулей. Любой, кто попытается клонировать ваш суперпроект, получит ошибку.

4
ответ дан 7 December 2019 в 03:10
поделиться