Моя команда работает над проектом в резюме, содержащем около 20 000 файлов Java. Из-за количества файлов на обновление cvs требуется время. Обычно я оставляю около 5 копий всего дерева на извлечении, чтобы упростить проверку различных запросов, не беспокоясь о том, какие файлы были изменены для каждого из них. Очень сложно поддерживать все 5 деревьев в актуальном состоянии и синхронизировать друг с другом.
Я читал, что использовать git локально с удаленным cvs-сервером довольно просто, и что git работает быстро. Сможет ли git значительно ускорить обновление моих локальных деревьев?
Я понимаю, что нижняя граница - это время для одного обновления резюме. Но я думаю, что как только первое дерево будет обновлено, можно будет быстро синхронизировать остальные 4 с первым, вместо того, чтобы делать еще 4 команды обновления cvs. Я правильно понимаю git?
Мы делаем нечто подобное на работе. В основном мы используем ветку master
в git как единую обновленную версию кода CVS; мы там не занимаемся разработкой, только обновления CVS. Затем все наши проекты разработки выполняются в функциональных ветках, которые мы переустанавливаем. Когда мы выполняем обновления CVS в ветви master
, мы фиксируем эти изменения в master
, а затем переустанавливаем наши другие ветки разработки на master
.
Это не идеально - из-за этого сложно делиться ветвями с другими людьми. Но мы можем управлять несколькими проектами разработки одновременно и легко выполнять ветки, слияния и сравнения. И при необходимости мы взаимодействуем с CVS только в одной ветке master
.
Да, это на тонну быстрее, потому что все местное. Он в основном генерирует различия из вашей ветки и применяет их к новому заголовку ветки.
@ CraigP.Motlin, такие операции в git обычно выполняются почти мгновенно. Получение текущей версии из CVS происходит медленно (возможно, медленнее, чем в собственной CVS). Whay is a true bear - это первая проверка (либо CVS, либо SVN), она засасывает все ревизий. Для большого хранилища это может занять буквально несколько дней. Процесс довольно хрупкий, так как он теряет соединение с сервером и должен быть перезапущен (а если он не завершен, ничего не проверяется; не паникуйте, продолжайте). После клонирования одной копии репозитория CVS вы можете просто скопировать каталог.
Я использую Git в качестве клиента Subversion в большом проекте (порядка 10 КБ файлов). Git быстрый, очень быстрый. Это настолько быстро, что я сохраняю только рабочий клон один и переключаюсь между ветвями функций в одном и том же клоне. Как и вы, когда я использовал Subversion, у меня было две или три одинаковых проверки, и я регулярно переключался между ними, поскольку у меня одновременно выполнялось несколько задач. Иногда это должно было быть довольно запутанным. Благодаря таким функциям Git, как облегченные ветки, тайник и «git add -p», я обнаружил, что мне больше не нужны множественные проверки. Я могу делать все в одном каталоге и не беспокоиться о потере изменений, которые я забыл или случайно перезаписал.
Я не использовал Git с CVS, но если его интеграция похожа на git-svn, то проблем не возникнет.
Интеграция git как CVS клиент оставляет желать лучшего по сравнению с SVN (по крайней мере, так было раньше, проекты, за которыми я следил, которые использовали CVS, перекочевали с него, так что у меня нет недавнего опыта). В исходных текстах есть CVS сервер, работающий как интерфейс к репозиторию git, но я всегда считал это просто сумасшедшим результатом больного ума, так что ...).
Звучит неплохо. Шаг перебазирования быстрее, чем cvs up?