Слияние и работа параллельно с Git - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть несколько веток git-проекта, различия главным образом в файлах конфигурации и больших двоичных объектах.Я бы хотел, чтобы эти проекты были в основном объединены и синхронизированы, поскольку разработки в одной ветви должны происходить и в других параллельных ветвях, но я не уверен, как это сделать.

БольшинствоРуководства по git и тому подобное, что я видел, на самом деле не говорят об этом, и я не уверен, что лучший подход для такого рода проблем.

Cherrypicking может быть вариантом, но, конечно, этоозначает, что кто-то, работающий над одной из этих веток, теряет почти всю историю различных изменений.Если есть способ сказать: «Вишни все в этом огромном проекте, кроме файлов, определенных в этом файле» или что-то еще, это может все же работать.Это все равно кажется неправильным.

Ответы [ 3 ]

2 голосов
/ 05 декабря 2011

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

main-------update 
      \
       \--branch1 for env1 (commited config for env1)

становится

main---update-- 
               \
                \-- rebased branch1 for env1 (commited config for env1)

или даже

main---update------------------------------merged with branch1-- 
               \                        /                       \
                \-some work in branch1-/                         \-rebased branch1 for env1 (commited config for env1)
1 голос
/ 05 декабря 2011

То, что вы действительно ищете, это хорошая модель ветвления. Вы должны взглянуть на это . По сути, это хороший способ управлять множеством связанных ветвей. Это требует дисциплины, но в конечном итоге это того стоит.

Конечно, я предполагаю, что ваши файлы конфигурации и большие двоичные объекты не являются большими (гигабайты). Если это так, вы, вероятно, захотите использовать субмодули для управления ими в отдельном репозитории, как предлагает @Hamish.

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

Я бы разделил ваш проект на две части:

  • основной проект (весь общий код)
  • ресурсы конфигурации / BLOB-объектов.

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

В вашем репозитории конфигурации содержится все остальное.

В зависимости от проекта вы можете объединять источники с помощью инструмента.например Piston , подмодули или марионетка (в зависимости от структуры вашего проекта).

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

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

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