2016-01-17 3 views
1

У меня есть проект, который должен поддерживать iOS7. Я хочу использовать lib (назовем его LIB), который не поддерживает iOS7, но может быть легко изменен для этого. Я также ожидаю, что LIB будет изменяться довольно часто.Как изменить код третьей стороны, импортированный с помощью git (поддерево, подмодули и т. Д.)?

Что будет идеальным решением:

  1. Я включил код библитеками в мой проект (тег с последним выпуска)

  2. Я изменяю LIB для поддержки iOS7 (как правило, только один фиксации) , I do not хотите переместить этот фиксатор в оригинальный репозиторий LIB, но хотите сохранить его в моем репозитории проектов.

  3. Когда выпущена новая версия LIB, я обновляю ее в своем проекте, а сливается с изменениями из пункта 2 или просто переделывает эти изменения.

  4. Я не хочу иметь полную историю LIB в моей истории проекта (как git поддерево делает AFAIK). Только что-то вроде «LIB изменилось до 1.2.42, LIB обновлен для поддержки iOS7»;

Я могу скопировать код библитеков себя или поддерживать вилку библитеков с поддержкой iOS7, но это отнимает много времени и не очень «автомагический». Я проверил git-подмодули и git-поддерево, но насколько я понимаю, невозможно иметь точку 2, не так ли ?.

Что такое лучший подход для решения этой проблемы?

ответ

1

Я могу ... поддерживать вилку библитеками с поддержкой iOS7

Это самый лучший вариант здесь, я думаю.

Пройдите библиотеку и используйте свою вилку в своем приложении. Если вы хотите использовать новую версию восходящей библиотеки, объедините эти изменения в свою вилку и обновите основное приложение, чтобы использовать новую версию вашей разветвленной библиотеки.

Это, безусловно, возможно сделать с использованием подмодулей Git, хотя менеджер зависимостей, такой как CocoaPods, может быть лучшим вариантом. Обычно я предпочитаю использовать менеджеров зависимостей, когда могу, хотя я не разработчик iOS и не могу сказать много о CocoaPods в частности.

+0

спасибо. CocoaPods, к сожалению, не будет работать, потому что мне нужна библиотека, а Swift и CocoaPods поддерживают Swift только для проектов iOS8 +. Но git подмодули должны работать. – Avt

+0

Знаете ли вы, что возможно или нет, чтобы достичь пункта 2 только с помощью Git? – Avt

+0

@Avt, если вы откажете библиотеку, нет (технической) необходимости внести свои изменения обратно в восходящую версию библиотеки. Если эти изменения будут полезны другим разработчикам, было бы неплохо поделиться ими, и в зависимости от того, как библиотека лицензируется, вам может потребоваться. Но последствия лицензии будут одинаковыми независимо от того, используете ли вы подмодули Git или какой-либо другой механизм. – Chris