Использование одного git-репо для всех вариантов приложения - это то, как я храню мое.Например, одно из моих приложений имеет бесплатную и профессиональную версию и доступно как на рынке Android, так и в магазине приложений Amazon.В git у меня есть 3 ветки:
Master - бесплатная версия, pro - этоплатная версия на рынке Android, а amzn - бесплатная версия в магазине приложений Amazon.
Я делаю все свои изменения функций в master.Когда я буду готов выпустить релиз, я создаю и тестирую бесплатную версию, затем помечаю мастер с номером выпуска.Затем я переключаюсь на pro и запускаю git merge master, чтобы внести все новые изменения.
Поскольку pro - платная версия, когда я впервые получил ответвление от master, я закомментировал код, связанный с рекламой (так какэто было всего несколько строк, я не думал, что какой-либо рефакторинг был необходим), и изменил все строки так, чтобы они ссылались на «Some App Pro» вместо просто «Some App».
Во время слияния я обычноне имеет никаких конфликтов, и эта оригинальная модификация сохраняется.но если нет, то довольно легко разрешить конфликты и вернуть про-ветку без рекламы.
Аналогично для ветки amzn, я изначально удалил все ссылки на рынок Google и выполняю слияние с мастером всякий раз, когдаЯ готов к выпуску.
Затем и для pro, и для amzn я могу собрать test и tag.
Чтобы сохранить уникальность имен пакетов (в чем я не уверен, это требование илинет), я сначала взял свои действия и переместил их в новые пакеты, то есть com.whwhat.free.appname, com.whwhat.pro.appname ...