Как объединить отдельные репозитории Git, отслеживающие разные ветки одного и того же репозитория CVS?

В моей компании есть центральный сервер CVS. У нас есть разные ветки для каждой версии продукта, которая все еще активно поддерживается. Локально я использую Git, в основном следуя подходу из http://undefinedvalue.com/2010/07/02/workflow-remote-cvs-local-git (git cvs занял очень много времени, а затем остановился с ошибкой :-/).

Я использую отдельный репозиторий Git для каждой ветки CVS (где каждая ветка CVS извлекается в другой каталог). Так, например, у меня есть каталоги ~/dev/our_product/v2, ~/dev/our_product/v3, ~/dev/our_product/v4 и ~/dev/our_product/main, каждый с .git непосредственно в каталоге. Ветка master следует за CVS (я обновляю ее вручную, периодически выполняя обновление cvs, за которым следует git commit).

Сейчас я думаю о том, чтобы объединить все эти репозитории Git в один. Если я понимаю, как объединить две ветки из двух разных репозиториев в одном репозитории? правильно, я могу создать новый репозиторий и заставить его отслеживать все существующие репозитории. Это также импортирует все ветки из существующих репозиториев, верно? И могу ли я потом выбросить существующие репозитории? Или я должен использовать другой метод, если я хочу это сделать?

Мне также интересно, облегчит ли это мой рабочий процесс.

Вариант использования 1: я начинаю разработку функции для основной ветки CVS, создавая ветку с названием some-feature. Затем я узнаю, что он должен перейти в v3. Могу ли я просто перебазировать функциональную ветку на v3?

Вариант использования 2: когда я вношу изменения в v2 (в ветке функций, некоторые-другие-функции), я должен объединить их в v3, v4 и main. Могу ли я сделать это, просто набрав «git merge some-other-feature» в соответствующих ветках отслеживания CVS?

С наилучшими пожеланиями,

Йенс


person Jens Müller    schedule 07.11.2012    source источник


Ответы (1)


Я могу создать новый репозиторий и заставить его отслеживать все существующие репозитории. Это также импортирует все ветки из существующих репозиториев, верно?

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

И могу ли я впоследствии выбросить существующие репозитории?
Если вам не нужно, чтобы они снова публиковались в CVS, то да.

Я начинаю разработку функции для основной ветки CVS, создавая ветку с названием some-feature. Затем я узнаю, что он должен перейти в v3. Могу ли я просто перебазировать ветку функций в v3?
Да, перебазировать перед слиянием, как описано в "git rebase vs git merge".

Могу ли я сделать это, просто набрав "git merge some-other-feature" в соответствующих ветках отслеживания CVS?
Да, это идея для распространения на эти ветки.

person VonC    schedule 07.11.2012
comment
Я все равно не использую репозитории git-cvs — git cvs import не смог справиться с нашим репозиторием CVS здесь… - person Jens Müller; 18.01.2013