Миграция из StarTeam в систему управления исходным кодом - PullRequest
5 голосов
/ 07 декабря 2011

В настоящее время мы используем StarTeam для нашего проекта, и срок действия лицензии скоро истекает.Мы рассчитываем перейти на Team Foundation Server или что-то подобное, но есть толчок (в основном от меня и еще одного человека) перейти к какой-либо форме распределенного контроля версий.Одна из проблем заключается в том, что наш менеджер изменений хочет иметь возможность отслеживать и выпускать по запросу на изменение (как в StarTeam), и я не верю, что это можно легко сделать с помощью Mercurial или Git из коробки (пожалуйста,поправьте меня, если я ошибаюсь).

Это более 15-летний продукт с тысячами java-файлов и пакетов PL / SQL, поддерживаемый 5-6 подгруппами разработки с общим количеством разработчиков 30-40 человек.,Мне кажется, что это сделало бы распределенный репозиторий кошмаром с менталитетом «комментируй раньше, комментируй чаще».Тот факт, что каждая команда будет работать над совершенно другой подсистемой в одном и том же хранилище, делает это еще более неприятным для меня.

Наш текущий процесс StarTeam для любого изменения таков:

  1. Блокировка файлов, с которыми вы хотите работать,
  2. Внесите все изменения и просмотрите их из копии на сетевом диске,
  3. Регистрация (и разблокировка) измененных файлов, надеясь, что кто-то насильно не сломал вашу блокировку,
  4. Надеюсь, что ваше изменение не сломало сборку из-за чужого изменения в других файлах

Лично я думаю, что идея«блокировка» файлов - это смешно.Команд между командами должно быть достаточно, чтобы вам это было не нужно.

Кто-нибудь здесь имеет опыт работы с распределенными репозиториями для проектов аналогичного размера?Не могли бы вы дать какие-либо предложения относительно решений по управлению версиями и / или управлению изменениями?Основное требование заключается в том, чтобы система могла управлять запросами на изменения, инициированными заказчиком, и заставлять разработчиков связывать свои проверки с одним.

Спасибо.

Ответы [ 6 ]

4 голосов
/ 07 декабря 2011

Мы сделали это очень успешно с помощью git.Мы следуем этому процессу.Очень легко отслеживать прогресс по любой проблеме:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Если вы посмотрите на комментарии, некоторые влиятельные люди просмотрели этот процесс.Это отличный способ работать, и надеюсь, что при написании вы получите необходимые боеприпасы.Для информации о TFS, посмотрите здесь:

Разветвление TFS, в чем преимущества (вводящее в заблуждение название)

4 голосов
/ 07 декабря 2011

И Git, и Mercurial используются для проектов, сложность которых намного выше, чем вы упомянули. Поэтому использование Git / Mercurial для размера вашей проектной команды не должно быть проблемой.

По своей природе мы хотим больше контроля над сервером контроля версий. В связи с этим Subversion довольно популярен.

Как бы то ни было, легко поддерживать релизы, основанные на изменениях, используя DVCS, например, Mercurial или Git.

У вас может быть настройка репо, в которой наборы изменений передаются только после просмотра. Это должно смягчить требования вашего менеджера по изменениям.

DVCS имеет то преимущество, что вы можете легко создавать экспериментальные ветви или клоны, выбрасывать их, если это не работает, и вносить изменения, когда вы считаете, что они готовы к прайм-тайм. Фиксация часто / Ранняя фиксация - это практика, которая хорошо работает с DVCS, потому что вы вносите изменения в свое собственное хранилище. После того, как он испечен, вы можете подтолкнуть его вверх для доступности в команде.

Блокировка файлов - это старая эра. Он не используется даже такими инструментами, как Subversion. Это действительно препятствие для работы.

3 голосов
/ 07 декабря 2011

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

Блокировка файлов всегда неверна.Это то, для чего "слияние".

В настоящее время я работаю над базой кода в ~ 200 000 строк кода с 10 разработчиками, и git работает очень хорошо.У нас есть группы на порядок больше, также мы используем git для других проектов.Сила Git заключается в слиянии, и именно так он работает с несколькими разработчиками и множеством коммитов.Имейте в виду, что каждый толчок - это слияние в git, независимо от того, похоже это или нет.Ваш локальный репозиторий может иметь ветку с именем master, но это не та ветка, что и master в центральном репозитории.Чтобы синхронизировать их, вы выполняете слияние, которое иногда является просто «ускоренным слиянием».

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

Вам следуетперейти к Git для улучшения процесса разработки.Для меня это в корне изменило (улучшило) способ написания кода.Вам будет предложено представить пример того, как Git лучше управляет изменениями в бизнес-среде без всяких предварительно упакованных маркеров, поставляемых дорогими инструментами IBM.Реальная проблема в том, что, приняв git, вы больше никогда не сможете работать ни с одним из других инструментов, независимо от того, насколько они хороши в бизнес-кейсе ...

2 голосов
/ 16 декабря 2011

Я написал это в комментарии, но я думаю, что это достаточно важно, чтобы он заслуживал полного ответа.

Я работаю консультантом Mercurial, и когда я общаюсь с клиентами, они часто спрашивают «запросы на изменения» и «управление изменениями». Когда я говорю им, что у Mercurial не было такого понятия , они удивляются. Как и Git, Mercurial является целенаправленным инструментом. Он делает контроль версий и позволяет вам определять рабочие процессы сверху. Вы можете формулировать рабочие процессы в терминах запросов на изменение, если хотите, но вам это не нужно.

Типичный способ обработки запросов на изменение состоит в том, чтобы поместить их в какой-либо механизм отслеживания проблем. Связать наборы изменений с CR можно, используя именованные ветви в Mercurial или используя комментарии в сообщениях коммитов в Git. При отправке на центральный сервер проблема обновляется ловушкой.

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

Наконец, когда вы хотите взять на себя обязательство освободить ветку, вы объединяете ее с основной линией.

1 голос
/ 13 марта 2013

В настоящее время для StarTeam существует удаленный помощник git, который также можно использовать для импорта истории StarTeam в репозиторий git, который может служить заменой StarTeam.

Код: https://github.com/warrenfalk/git-st/tree/st_to_git_migration_features(Это ветвь git-st с функциональной веткой, способной выполнять этот вид импорта. Это ветка st_to_git_migration_features.)

см. https://github.com/warrenfalk/git-st/blob/st_to_git_migration_features/README.migration.md для инструкций о том, как это сделать.1009 *

Я использовал это для успешного импорта истории StarTeam в репозиторий git.

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

Ниже приведено небольшое веб-приложение, которое преобразует проекты StarTeam в GIT-репозиторий.

http://dl.dropbox.com/u/101447754/startgit.tar.gz

Я разработал, потому что в своей работе решил перенести и дать возможность любой группебез предшествующей исследовательской работы, чтобы сделать такой процесс.

Сейчас:

StartGIT es una sencilla herramienta para trabajar con Controladores de Versiones, su fin es poder Convertir un repositorio en Starteam a GIT, para elloСценарий "svnimporter-1.2-й" obtenido en "http://www.polarion.com/user/direct_register.php?dl=svnimporterst":

Установка тенниса: - GIT - git-svn - java - apache2

Pasos: - Descomprimir" startgit.zip "-Colocar la carpeta descomprimida "startgit" en el Directorio "/ var / www /" - Abrir navegador web y colocar la siguiente direccción "http://localhost/startgit"

// -------------------------------------------------------------

StartGIT - простой инструмент, его цель - преобразовать репозиторий Starteam в GIT.

В этом сценарии используется «полученный svnimporter-1.2-й» http://www.polarion.com / user / direct_register.php?dl = svnimporterst "

Установили: - GIT - Git-svn - java - apache2

шаги: - Разархивируйте" startgit.zip "- Поместите разархивированную папку" startgit "в" /var / www / "- Откройте веб-браузер и" http://localhost/startgit"

...