Передача двух удаленных проектов из Git - PullRequest
1 голос
/ 16 октября 2010

У меня есть проект в Codeigniter, управляемый через Git и Github, который состоит из моих «шаблонных» настроек и библиотек (например, централизованной библиотеки Render), которые я использую для всех своих проектов CI - давайте назовем это «Baseline».

В то же время, когда я разрабатываю и дорабатываю проект Baseline CI, я также разрабатываю текущий клиентский проект, который мы назовем «Клиент».

Мой вопрос- Каков наиболее эффективный способ разработки как базового проекта, так и клиентского проекта одновременно?Например, я могу создать новый контроллер и модель в проекте клиента, но затем добавить новые помощники, некоторые общие представления и добавить пару библиотек, которые, по моему мнению, необходимо добавить в базовую версию.Нужно ли мне выполнить два коммита, один для Базовой линии (и передать его в удаленное Базовое репо), а затем снова зафиксировать для проекта Клиента?

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

Справка?

Ответы [ 2 ]

2 голосов
/ 16 октября 2010

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

  1. Иметь один репозиторий (A) это ваш "базовый" проект.Сделайте всю свою работу на базовом уровне в этом репозитории и зафиксируйте ее там.

  2. Клонируйте этот репозиторий другому, (B), и сделайте всю свою работу для клиентского проекта там,Оставьте (A) в качестве пульта (если вы git clone (A), он будет автоматически установлен как origin; вы можете добавить пульт github как github вместо origin).

  3. Затем, когда вы обновляете базовый репозиторий (A), зафиксируйте их в (A), а затем используйте git pull, чтобы перетащить их из (A) в (B).(Никогда не нажимайте с (B) на (A), поскольку вы не хотите, чтобы клиентский код в базовом репо.)

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

1 голос
/ 18 октября 2010

Я бы порекомендовал использовать ветки или подмодули.

С ветвями у вас будет ветвь baseline и ветвь client. Когда бы вы ни переключились на client после обновления baseline, объедините baseline в client.

В подмодулях любой репозиторий может быть модулем верхнего уровня, а другой - его дочерним. Оба макета имеют некоторый логический смысл (с baseline сверху, client зависит от него и поэтому является дочерним; с client сверху он использует baseline в качестве библиотеки, так что это должно быть дочерним; до вас).

Я бы порекомендовал ветвление, хотя.

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