Git Project с несколькими продуктами и измерениями

Может ли кто-нибудь посоветовать мне, как правильно применить git к проекту Android с несколькими вариантами и размерами продукта.

Я мог бы просто добавить Git ко всему проекту, но будет ли это правильным способом?

РЕДАКТИРОВАТЬ:

Допустим, я создаю приложение для магазина.

У меня была бы следующая конфигурация

flavourDimensions "client", "network" productFlavors {client1 {Dimension "client" ...}

client2 {
  dimension "client"
  ...
}

prod {
  dimension "network"
  ...
}

debug {
  dimension "network"
  ...
}

}

Разновидности результирующего продукта будут совместно использовать одну и ту же «базу кода» (поскольку они оба являются приложениями магазина), но им также потребуются отдельные выпуски / функции Iteration / Version.

Один из способов, которым я думаю (и единственный известный мне способ сделать это), - это просто добавить Git ко всему проекту. Создайте ветку для аромата продукта и продолжайте оттуда. Единственная проблема в том, что когда я вношу некоторые изменения в «Базовый код», мне придется каскадировать его в некоторые, если не во все ветки.

Мой вопрос в том, правильно ли это сделать.

Заранее спасибо.


person Archie G. Quiñones    schedule 21.02.2018    source источник
comment
Это зависит от того, как ваш проект имеет разные вкусы и размеры. Я думаю, что если вы поделитесь более подробной информацией о вкусах и размерах, это поможет вам получить ответы!   -  person Paresh Mayani    schedule 21.02.2018
comment
@PareshMayani - Я отредактировал свой вопрос примером. Пожалуйста, помогите мне своими идеями. Заранее спасибо.   -  person Archie G. Quiñones    schedule 21.02.2018


Ответы (1)


Вы можете использовать любой из следующих вариантов:

Вариант 1: управлять всеми проектами в одной ветке и отмечать разные версии проектов.

Предположим, вы управляете двумя проектами в одной ветке, вы можете использовать теги для помощи в управлении разными версиями проектов по отдельности: формат версии A*.*.* (например, A1.0.0) для проекта1 и формат версии B*.*.* (например, B1.0.0) для проекта2.

Чтобы добавить тег для HEAD:

git tag -a <version> -m 'message'

Чтобы добавить тег для фиксации истории:

git tag -a <version> -m 'message' <commit>

Вариант 2: управлять разными проектами в разных ветках

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

И если «кодовая база» изменяется в одной ветке, вы можете применить изменения в других ветвях.

Чтобы применить файл из ветки (например, branchA) к другой ветке (например, branchB), вы можете использовать следующие команды:

git checkout branchB
git checkout branchA -- filename
git commit -m 'apply the changes of the filename from branchA into branchB'
person Marina Liu    schedule 22.02.2018
comment
Я впервые слышу об использовании тегов и, честно говоря, я еще недостаточно хорошо понимаю первый вариант. Я, наверное, сначала пойду и изучу его. Не могли бы вы вкратце описать, что такое теги? Означает ли вариант 1, что я буду управлять двумя проектами одновременно, что означает, что у них должна быть одна и та же версия? - person Archie G. Quiñones; 22.02.2018
comment
Теги в git могут помочь вам записывать определенные коммиты, которые импортируются в ваш процесс. И вы можете рассматривать тег как сокращение от фиксации. Более подробную информацию о тегах вы можете найти на странице git-scm.com/book/ ru / v2 / Git-Basics-Tagging. - person Marina Liu; 22.02.2018
comment
@ ArchieQuiñones Вы уже решили проблему? Если да, вы можете отметить это как ответ (символ √ слева от ответа). И это также принесет пользу другим, у кого есть подобные вопросы. - person Marina Liu; 23.02.2018
comment
Привет, Марина, извини, у меня еще нет времени проверить это. Поэтому я еще не пометил это как ответ. Я проверю это в эти выходные. Ваш ответ заставил меня начать. Я очень ценю это. - person Archie G. Quiñones; 23.02.2018
comment
Хорошо, ты можешь попробовать позже. А если там что-то прилипнет, дайте знать :) - person Marina Liu; 23.02.2018
comment
Я не думаю, что вариант 1 подходит для моего сценария, поскольку я представляю, как поддерживать отдельную ветку для каждого типа продукта. Вариант 2 кажется лучшим вариантом. - person Archie G. Quiñones; 24.02.2018
comment
У меня дополнительный вопрос: возможно ли, чтобы файлы, не относящиеся к Product Flavor, не попали в ветку? Например, у меня есть разновидности продукта client1 и client2. Я хочу иметь branchClient1, где он содержит только файлы BaseCode и Client1, а также branchClient2, где он также содержит только файлы BaseCode и Client2. Я бы хотел что-то подобное, чтобы мне не нужно было видеть ненужные файлы при поддержке конкретного продукта. Это возможно? - person Archie G. Quiñones; 24.02.2018
comment
Это совместное использование BaseCode для двух веток. И да, это возможно. Вы можете просто скопировать BaseCode из одной ветки в другую (точно так же, как три команды в option2 делают то же самое). - person Marina Liu; 24.02.2018
comment
Тогда это хорошие новости. Я бы попробовал установить вариант 2. У меня могут возникнуть вопросы во время или после него. Я надеюсь, что ты все еще будешь там, чтобы ответить. Вы действительно очень помогли. Большое тебе спасибо. :) - person Archie G. Quiñones; 24.02.2018