usando git para mantener una base de código compartida

No estoy muy seguro de cuál es la terminología correcta para usar para esto, así que por favor, perdóneme por adelantado si cometo cosas horriblemente.

Actualmente mantengo una base de código en git para una aplicación que publico en la tienda de aplicaciones Mac. Por varias razones, ahora estoy buscando publicar una versión que no sea MAS.

Obviamente, las versiones MAS y no MAS compartirán el 95% de una base de código común. De hecho, las únicas partes que no compartirán en común serán la verificación de recibos (versión MAS) y las keys de licencia + actualizaciones automáticas (versión que no sea MAS).

Esto me lleva al meollo de mi pregunta: ¿presumiblemente la forma "correcta" de hacer esto sería mantener dos twigs separadas en git? ¿Cómo puedo asegurarme fácilmente de que las dos twigs se mantengan sincronizadas sin preocuparse por sangrar la verificación de recibos y el código de key de licencia entre las dos versiones? ¿Qué pasa con la gestión de proyectos xcode? Supongamos que agrego un file al proyecto MAS, ¿hay alguna manera fácil de hacerlo aparecer en el proyecto que no es MAS?

Por favor, avíseme si se necesita alguna aclaración.

Gracias por adelantado.

No usaría diferentes twigs, querría que la versión 2.0 para el MAS y la versión 2.0 para el que no sea MAS sean lo más equivalentes posible. Solo tendría dos Objetivos y definiría MAC_APP_STORE = 1 en la configuration de debugging y liberación para el objective MAS. El 95% del código será miembro de ambos objectives, pero la licencia y los files de códigos de actualización automática solo serán miembros del objective que no sea MAS. Habrá algunos bits en el código común que deben comstackrse condicionalmente así:

#ifdef MAC_APP_STORE ... #else ... #endif 

Si puede aislar los diferentes files en un subdirectory, entonces podría considerar trabajar con un submodule (vea el capítulo del libro Pro Git sobre él )

De esa manera:

  • solo tiene una twig para mantener para el repository principal que contiene el 95% de código común
  • puede mantener twigs para los files específicos de una versión determinada en el repository de submodules.