Объединение нескольких GIT-репозиториев с сохранением всех тегов / веток - PullRequest
4 голосов
/ 05 октября 2011

Мне уже удалось объединить ветви из нескольких GIT-репозиториев в один новый репозиторий (используя комбинацию «git filter-branch» и «git fetch / merge»). Но я не могу "слить" теги из этих веток ... это вообще возможно? Что касается моего (довольно ограниченного) знания GIT, тег относится к одному коммиту, который сам идентифицируется хеш-значением SHA1, которое в основном рассчитывается из всех предыдущих коммитов. Поскольку ветви из разных репозиториев не имеют общего коммита-предка, мне трудно представить, как тег можно переписать таким образом, чтобы он все еще «имел смысл» (в GIT-смысле) в контексте нового и полностью несвязанный репозиторий.

Есть идеи?

РЕДАКТИРОВАТЬ: Чтобы уточнить, что я собираюсь сделать:

Давайте предположим, что у меня есть два репозитория с именами "A" и "B", которые я хочу объединить в один новый репозиторий с именем "C".

Макет каталога похож на

A
|
|-someFileA
|-anotherFileA
|-...
B
|
|-someFileB
|-anotherFileB
|-...

и объединенный репозиторий должен выглядеть как

C
|
|-A
| |-someFileA
| |-anotherFileA
| |-...
|
|-B
| |-someFileB
| |-anotherFileB
| |-...

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Теги не являются каталогами (как это было бы в Subversion), поэтому fetch / merge их не учитывает.
Кроме того, git fetch не выбирает все теги по умолчанию (если не указано --tags).

Учитывая, что теги ссылаются на неизменяемый контент и что вы изменяете этот контент с помощью слияний, я не думаю, что вы сможете легко их сохранить, если только вы повторно не примените теги с похожим именем вручную к коммитам, которые вы считаете схожими с оригинальными теговыми тегами .


Еще один менее навязчивый способ «объединить» эти два репозитория - это объявить A и B как подмодулей C.
Нет необходимости в слиянии, а A и B сохраняют свои ветви и теги

0 голосов
/ 06 октября 2011

Если вы хотите потратить на это несколько часов, я сделал несколько похожих странных операций с репо через python и dulwich .Это хакерская работа, но если ее выполнение стоит нескольких часов или времени, сделайте это.

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