Управление частным кокоаподом с тем же именем, что и общедоступный кокоапод

У нас есть частный репозиторий спецификаций. Один из наших частных модулей зависит от другого внутреннего модуля с именем CWFoundation (s.dependency 'CWFoundation', '~> 0.0.1'). Подспецификация CWFoundation — это всего лишь способ использования CWFoundation от jayway (https://github.com/jayway/CWFoundation) как pod (поскольку для него не существует файла podspec).

Все работало нормально, пока кто-то еще не создал в github новый проект с таким же именем, CWFoundation (https://github.com/guojiubo/CWFoundation) и добавил его в общедоступный репозиторий Cocopods.

Теперь наш внутренний модуль при разрешении зависимостей вместо загрузки CWFoundation из нашего частного репозитория спецификаций загружает его из общедоступного репозитория, и ничего не работает.

Я читал на cocopods.org, что

Если вы планируете разветвить библиотеку, которая уже является частью репозитория Master Spec, на данный момент мы предлагаем выбрать имя, которое начинается с буквы перед M.

Но мы следуем этому правилу, модуль называется CWFoundation и начинается с «C», и он не работает.

Что я могу сделать, чтобы получить наш частный файл podspec для CWFoundation?


person Carlos    schedule 26.09.2014    source источник


Ответы (2)


Этот комментарий «буква перед М» относится к имени вашего репозитория личных спецификаций в ~/.cocoapods/repos. Поскольку ~/.cocoapods/repos/master используется по умолчанию, вам нужно что-то вроде ~/.cocoapods/repos/alpha, а не ~/.cocoapods/repos/zeta. Пока это верно, он должен использовать первую найденную спецификацию, которая будет вашей, прежде чем та, что находится в репозитории основных спецификаций.

ИЗМЕНИТЬ

Судя по комментариям к моему ответу, это похоже на ошибку в CocoaPods. Пожалуйста, отправьте заявку. В то же время, простое переименование вашего podspec решит проблему.

person Keith Smiley    schedule 26.09.2014
comment
Наш частный репозиторий спецификаций называется GG-CocoaPods-Specs. Итак, это должно работать, верно? - person Carlos; 26.09.2014
comment
Наш частный репозиторий спецификаций называется GG-CocoaPods-Specs в ~/.cocoapods/repos. Я попытался изменить имя репо на gg-CocoaPods-Specs, на всякий случай, если имеет значение нижний/верхний регистр, но я получил то же самое. Я выполняю установку pod, но все равно получаю CWFoundation (0.0.4), неправильный... - person Carlos; 26.09.2014
comment
Как выглядит остальная часть вашей структуры папок? - person Keith Smiley; 26.09.2014
comment
Вы хотите увидеть всю структуру ~/.cocoapods/repos, структуру GG-CocoaPods-Specs или структуру master? Или все? Спасибо Кит! - person Carlos; 28.09.2014
comment
Структура вашего частного репозитория спецификаций. - person Keith Smiley; 29.09.2014
comment
Я думал об одном. Возможно ли, что мы извлекаем 0.0.4 для общедоступного репозитория, потому что у нас есть «CWFoundation», «~> 0.0.1» в файле podspec, а более высокая версия обоих репозиториев спецификации pod — 0.0.4 из общедоступного? - person Carlos; 29.09.2014
comment
Структура связанных внутренних модулей: - person Carlos; 29.09.2014
comment
Я не уверен, что есть проблема. Я изменил внутренний podspec с зависимостью CWFoundation на «CWFoundation», «0.0.1» (удален ~), и теперь он работает. Я понимаю, что с ~ ищет самую большую версию в обоих репозиториях. И если мы используем фиксированную версию, берется одно из первых репозиториев в алфавитном порядке. Я прав? - person Carlos; 30.09.2014
comment
Да, это правильно. Ошибка здесь в игнорировании того, что при использовании ~> - person Keith Smiley; 30.09.2014

Попробуй это:

pod "NameConflictedPod", :source => MY_OWN_SPEC_REPOSITORY, :tag => '0.1'

Это подходит для меня.

MY_OWN_SPEC_REPOSITORY — это URL-адрес git для вашего частного репозитория спецификаций. Как мы знаем, официальный репозиторий спецификаций по умолчанию — https://github.com/CocoaPods/Specs.git.

Надеюсь, я хорошо описал MY_OWN_SPEC_REPOSITORY.

Предупреждение. В этом решении указана версия модуля. Он не может использовать версию типа «~> 0.0.1», которая автоматически обновляет версию с исправленной незначительной ошибкой. Но... Это не имеет большого значения, так как капсула разработана вами :P

person ManuQiao    schedule 07.02.2018