Разделение одного Git-репозитория на множество - ветви становятся вилками - PullRequest
4 голосов
/ 22 октября 2010

У меня есть проект в SVN, который я перевожу на Git.Проект состоит из «основного» продукта (под стволом), который затем разветвляется в том же хранилище и используется в качестве отправной точки для настройки для каждого отдельного клиента, которому мы выпускаем продукт.

Кажется,для меня, что это не настоящие ветки, так как они никогда не будут объединены обратно в ствол, и им было бы лучше жить в своих собственных хранилищах с их историей, связывающей их с хранилищем «ствола» и возможностью вносить изменениякогда это необходимо, из магистрали (легко выполняется с помощью git).

Что несколько усложняет ситуацию, так это то, что у одного клиента есть ветвь их собственного проекта, которая является "реальной" ветвью в том смысле, чтов какой-то момент времени будет объединен с основной ветвью этого клиента.

Надеемся, что для ясности структура SVN выглядит следующим образом:

  • Репозиторий "Project"
    • Магистраль
    • Филиалы
      • Клиент1 (ветвь от Магистрали v100)
      • Клиnt2 (разветвленный от Trunk v150)
      • Client2-Branch (разветвленный от Client2 v200)
      • Client3 (разветвленный от Trunk v150)

И структура, к которой я хотел бы получить:

  • Репозиторий "Project"

  • Репозиторий Client1 (составлено изSHA123)

  • репозиторий Client2 (из состава SHA456)

    • Client2-Branch (разветвленный от SHA456789)
  • Client3 Repository (составлено из SHA789)

Может кто-нибудь порекомендовать хороший способ сделать это - я не новичок в Git и знаю о ветке фильтра, яЯ просто не уверен, какой метод мне следует использовать, чтобы получить эту структуру и сохранить как можно больше истории.

Спасибо

Ответы [ 2 ]

4 голосов
/ 22 октября 2010

Если вы действительно хотите это сделать, клонируйте репо и удалите посторонние ветки в каждой.

Но нынешняя ситуация выглядит просто отлично. Вы уверены, что никогда не захотите выбирать патчи из одного репо в другой?

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

Вы можете использовать svn2git , чтобы клонировать ветви в свои собственные репо, что-то вроде

svn2git svn://project/branches/client1 --rootistrunk

для каждой ветви, которую вы хотите превратить в раздвоенный репо, а затем

svn2git svn://project/trunk --rootistrunk

для транка.

Я сделал нечто подобное для очень большого преобразования svn-> git.

...