Ведение исходного кода поставщика с помощью Xcode и SVN - PullRequest
0 голосов
/ 14 декабря 2011

Вопрос: Каков наилучший способ поддерживать проект, основанный на другом проекте OSS, через Xcode и версию, управляемую SVN?

Я бы хотел запустить форк (?) Достаточно популярного проекта с открытым исходным кодом (это разрешено). В основном я хочу создать свой собственный пользовательский интерфейс, написанный на Cocoa / ObjC, и добавить несколько собственных функций.

Теперь этот проект OSS не совсем маленький. Сам проект содержит более 3000 файлов, и процесс сборки довольно интенсивный, состоящий из нескольких этапов и этапов, которые требуют компиляции инструментов сборки, их запуска и компиляции результатов.

Все это прекрасно и чудесно в Xcode, поскольку достаточно просто настроить фазы сборки и правила для обработки всего.

Что мне неясно, так это то, как лучше всего управлять патчами из апстрима. Они постоянно работают над проектом, и я бы хотел, чтобы эти патчи были в курсе, насколько это возможно, так как многие из файлов diff иногда создают до ста (!) Файлов одновременно.

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

Что я думаю сделать в этом отношении:

1) Установите репозиторий SVN «вверх по течению» для хранения копии исходного источника плюс минимальный минимум, необходимый для его компиляции в Xcode (например, xcproject, несколько xcconfigs, некоторые заголовочные файлы префиксов и все)

2) Настройте мое собственное репозиторий SVN «вниз по течению», где я делаю всю свою работу и применяю свои собственные модификации.

Всякий раз, когда апстрим выпускает патч, я могу применить его к # 1, затем синхронизировать с # 2 и справиться с любыми проблемами, созданными моими собственными изменениями.

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

Это лучший способ справиться с ситуацией, или я должен смотреть на это как-то иначе?

1 Ответ

1 голос
/ 15 декабря 2011

В SVN-мире он давно назывался "Vendor Branches" и интенсивно использовался многими командами (вы можете дополнительно погуглить эту фразу)

Технически это

  • один SVNрепо
  • хотя бы одна специальная ветка (особая с точки зрения использования, не более того), которая с помощью svn: externals связана с репо стороннего репозитория с кодом апстрима
  • ваше место для изменений (транк или любое другое место, я предпочитаю транк), изначально созданное как копия ванильного кода, и там вы выполняете все взломы кода

Если (или «когда») поставщикветка получила обновления от апстрима, вы просто слили ветку в / ваше место /, интегрируете изменения и продолжаете работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...