Как партизанить венчурный капитал с помощью git, когда на работе приходится использовать CVS?

Мое место работы в настоящее время использует CVS. Планируется миграция git, но это может занять много времени. Тем временем у меня есть проект с одним человеком, и я решил использовать git для своего личного развития. Ветвление, поэтапные коммиты, перебазирование и т. д. были фантастическими! Но, к сожалению, в какой-то момент этот проект и его историю нужно будет импортировать в CVS, чтобы другие могли следить за моим прогрессом.

Как лучше всего...

  • импортировать текущий проект (в идеале как набор отдельных коммитов/ревизий) в CVS
  • разрешить повторный импорт будущих изменений в CVS
  • (дополнительный вопрос - идеально, но не обязательно) объединить любые изменения CVS, сделанные другими разработчиками, обратно в git

На данный момент в CVS ничего нет, если это имеет значение. (И если бы я действовал по-своему, в CVS никогда бы ничего не было, но пока я застрял с ним!) Заранее спасибо!


person rjh    schedule 05.03.2010    source источник
comment
git может действовать как сервер cvs, и я почти уверен, что он также может получать данные из cvs (почти как git-svn).   -  person hasen    schedule 06.03.2010
comment
возможный дубликат Как экспортировать историю изменений из mercurial или git в cvs?   -  person mmmmmm    schedule 04.11.2013
comment
Спасибо, ответ там действительно хороший. К счастью, сейчас мы перешли на git :)   -  person rjh    schedule 10.11.2013


Ответы (2)


Хотя у меня нет явных знаний о CVS, я бы предложил следующую установку.

  • Work\Project.git ‹-- репозиторий git
  • Sync\Project ‹-- git clone главной ветки в ..\Work\Project.git + контроль версий CVS в этой папке.

Затем вы можете выполнять все свои действия с git в Project.git, а когда вы хотите импортировать в CVS, вы переходите к Sync\Project и выполняете git pull, чтобы воспроизвести изменения в вашем каталоге синхронизации (возможно, вам нужно выполнить полную проверку каталога в CVS?).

Для обратного сценария вам может понадобиться работать с веткой импорта, но я думаю, что было бы возможно получить изменения от ваших коллег в папке синхронизации, но сделать этот импорт в новой ветке и объединить ее с вашей основной веткой, которую вы вытащен из вашего основного репозитория git. После этого слияния вы можете git push вернуть изменения в свой Work\Project.git.

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

Импорт набора изменений CVS в git, есть git-cvsimport, который должен помочь вам в этом.

person Davy Landman    schedule 05.03.2010
comment
Звучит неплохо, единственное, с чем он не справляется, — это с сохранением моей существующей истории изменений. git-cvsexportcommit немного нестабилен. - person rjh; 06.03.2010
comment
хм... ну, вы можете создавать патчи из своего репозитория git и воспроизводить их как коммиты в своем репозитории синхронизации. Со временем вы могли бы даже написать сценарий для этого. - person Davy Landman; 06.03.2010
comment
Я экспериментирую, это потребует много ручной работы, но это выполнимо. Спасибо за подробный ответ! - person rjh; 07.03.2010
comment
Добро пожаловать, через некоторое время вы заметите закономерность и сможете создать несколько скриптов для автоматизации этого процесса, но, по крайней мере, вы будете контролировать синхронизацию. - person Davy Landman; 07.03.2010

git cvsimport и git cvsexportcommit могут дать вам рабочий процесс, аналогичный git svn

person Dustin    schedule 06.03.2010