Как перейти с RTC Jazz на Git?

Моя команда была вынуждена перейти с SVN на RTC Jazz scm около года назад. так как мы очень недовольны RTC, мы решили отказаться от него и переключиться на Git для контроля версий.

Я не нашел много информации о миграции из RTC в целом, но я нашел этот Rational Adapter для Git (я не уверен, что его можно использовать для такого рода миграции).

Как лучше всего перенести исходный код и изменить историю с RTC Jazz на Git?


person Ido.Co    schedule 29.05.2014    source источник


Ответы (3)


Поскольку мы столкнулись с той же проблемой и хотели сохранить нашу историю, мы начали создавать скрипт Python, который автоматизирует процесс переноса RTC SCM Stream by Stream в GIT.

Скрипт можно найти здесь: https://github.com/rtcTo/rtc2git.

Некоторые подробности о том, как работает программа. Она основана на интерфейсе командной строки RTC.

  1. Он создает пустой репозиторий git, клонирует его и создает там рабочую область на основе вашего самого старого потока.
  2. Для данного потока, заданного файлом конфигурации, он считывает базовые параметры компонента.
  3. Для каждого базового уровня этого компонента будет выполняться команда сравнения (чтобы увидеть все различия, к сожалению, сравнение непосредственно с последним потоком вызывает исключение @RTC Version 5.0.1)
  4. Вывод сравнения будет проанализирован для получения необходимой информации (автор, комментарий, дата и т. д.).
  5. Изменение будет принято в рабочей области, и вскоре после этого будет выполнена соответствующая команда git, чтобы сделать то же самое в git.

Для каждого потока будет создана ветка

В основном это все. Если вы хотите, я также могу предоставить несколько примеров команд, которые помогли мне получить необходимую информацию (информация о конкретных вещах, касающихся RTC CLI, довольно редка).

РЕДАКТИРОВАТЬ: я считаю текущую версию программы стабильной. Так что попробуйте. :) Я приветствую любые отзывы.

person Joker    schedule 27.01.2015
comment
Привет @ user2970422 - спасибо за вклад! Пожалуйста, добавьте дополнительную информацию о своем решении, так как ссылка может быть неработающей, и поэтому ваше решение больше не будет понятно. - person Florian Neumann; 27.01.2015
comment
@florianb Это может быть слишком долго, чтобы вставлять его сюда. - person Ido.Co; 27.01.2015
comment
@Джокер Выглядит очень мило! постараюсь в ближайшее время пересмотреть - person Ido.Co; 27.01.2015
comment
@Ido.Co пока не ожидает многого, так как он все еще находится в разработке (код тоже пока некрасивый). :D Но чтобы понять, что он должен делать, и с некоторой отладкой, вы можете немного поиграть. - person Joker; 27.01.2015
comment
@joker привет, какой инструмент вы бы посоветовали python или java, я хочу перенести огромный набор изменений - person VeKe; 12.12.2017
comment
@VedX python легче запускать и легче адаптировать к изменениям, но у него больше проблем с миграцией огромных репозиториев (из-за cli api от ibm конфликты слияния случаются чаще). java-версию сложнее запустить (за исключением того, что вы берете образ докера) и ее сложнее адаптировать к изменениям, но у нее меньше / нет проблем с миграцией огромных репозиториев. - person Joker; 27.12.2017

Я протестировал адаптер и подтверждаю, что он не предназначен для миграции. Он предназначен для связывания коммита git с набором изменений RTC.

Сама миграция ограничена и будет включать только часть управления исходным кодом, а не рабочие элементы или сборки.

Обычно я устанавливаю рабочую область репозитория на несколько последних базовых показателей и импортирую их в рабочее дерево git. Однако я не импортирую имена авторов.

При импорте используются параметры --git-dir и --work-tree команды git.
(как проиллюстрировано в этом ответе или этом один)

Вы можете печатать из любого места:

git --work-tree=/path/to/sandbox --git-dir=/path/to/repo/.git status|add|...

Сначала попробуйте статус, чтобы увидеть, что вы будете импортировать. Вы можете добавить в файл /path/to/repo/.git/exclude какой-нибудь шаблон, чтобы исключить из импорта ненужные элементы (например, папку .jazz5!).
Конечно, /path/to/sandbox может быть любой подпапкой в ​​этой песочнице: у вас нет импортировать все.

Повторите этот процесс с той же песочницей, обновленной с помощью разных базовых показателей/моментальных снимков, от самых старых до самых новых.

Вот и дают сырую историю, которой достаточно для начала.

person VonC    schedule 29.05.2014
comment
Спасибо за ответ, мне не нужны рабочие элементы или сборки. Не могли бы вы уточнить, как импортировать его в рабочее дерево git? Могу ли я также сохранить имена авторов? - person Ido.Co; 29.05.2014
comment
Я буду через час. Я на улице, печатаю с телефона - person VonC; 29.05.2014
comment
@Ido.Co извините за запоздалое редактирование: я был занят просмотром ландшафта, например i.stack.imgur .com/cZ1OV.png. - person VonC; 29.05.2014
comment
@VonC, интересно, что заставило тебя проверить ТАК, находясь в таком прекрасном месте :-) - person kostix; 29.05.2014
comment
Спасибо, действительно очень веская причина :) Значит, лучшим решением для ревизии будут исторические исходные данные и снимки? Есть ли способ сохранить всю историю изменений с авторами, затронутыми строками и всем остальным? - person Ido.Co; 29.05.2014
comment
@Ido.Co да, базовые планы (или моментальные снимки для нескольких компонентов одновременно) представляют собой согласованное видение базы кода, а не промежуточные наборы изменений. Кроме того, перейти к промежуточному состоянию только с наборами изменений непросто (см. stackoverflow.com/q/17657856/6309) - person VonC; 29.05.2014
comment
@kostix Я отслеживаю определенные теги с помощью наборов фильтров (stackexchange.com/filters), которые отправляют электронные письма каждые 15 минут, что вызывает тревогу мой телефон. - person VonC; 29.05.2014
comment
@VonC, извините за настойчивость, но нет ли способа создать новый репозиторий Git со всей нашей полной историей изменений со всеми нашими комментариями к фиксации? Это очень ценная информация. Спасибо. - person Ido.Co; 29.05.2014
comment
@Ido.Co изначально не через сам RTC (как коммерческий инструмент, у него нет стимула для облегчения такого полного экспорта в бесплатный инструмент). После этого вам нужно будет использовать их API для повторения всех наборов изменений и связанных с ними метаданных (как в stackoverflow.com/a /23903890/6309), но весь процесс будет медленным и громоздким. Я взял только несколько последних исходных данных и их комментарий, чтобы быстро начать работу. - person VonC; 29.05.2014

У меня была такая же работа, а именно конвертировать весь поток с несколькими компонентами в отдельные репозитории git. Попробовав вышеупомянутый скрипт Python, я обнаружил, что он слишком сложен (например, выбор всех URL-адресов в eclipse для создания файлов истории, поиска базовых показателей и т. д.) и вообще ненадежен. По крайней мере, не для компонентов с более чем 4000 наборов изменений.

Поэтому я написал еще один скрипт на Perl, который работает практически «из коробки», по крайней мере, в Windows 7.0. Сценарий включает в себя множество обходных путей для всех этих ошибок в scm, поэтому вам не нужно с ним возиться.

Ссылка на Bitbucket

Это сделало свою работу, и, возможно, это может помочь и вам.

Ральф

person Hennes    schedule 19.05.2015
comment
Спасибо, что поделился. Вы знаете, что причина такой сложности заключалась в том, что я не нашел подходящих команд lscm для этой информации, поэтому я очень рад, что вы поделились ею. Таким образом, я могу использовать эти команды и улучшать свой сценарий. :) Можете ли вы объяснить мне, что было ненадежным? Насколько я вижу, ваш скрипт делает те же шаги, что и мой, с точки зрения принятия вещей. - person Joker; 26.05.2015
comment
Прежде всего, я использовал scm вместо lscm, потому что, по крайней мере, на моих машинах это давало огромный прирост производительности. Несмотря на это, он все еще ужасно медленный (около 5 секунд на вызов scm). Во-вторых, скрипт на питоне действительно надежен (извините за это), но наши исходники — нет. Некоторые наборы изменений невозможно проверить из-за странных проблем. Поэтому мне пришлось их пропустить. И я сделал несколько подсказок в источнике, где пропустить эти плохие наборы изменений. Это очень помогло. - person Hennes; 28.05.2015
comment
Но на самом деле это не так, поэтому мне пришлось включить много других вещей. В ближайшие дни я сделаю обновление на GitHub. - person Hennes; 28.05.2015
comment
Хорошо, спасибо за разъяснение. Мы действительно тоже страдаем от плохой работы. Также много вещей в cli, похоже, не работает должным образом... :( Например, я хотел использовать набор изменений списка, как вы, и если я укажу, например, 30000 как максимум (у нас больше наборов изменений в одном компоненте, чем это) я получить ошибку сервера.... Так что мне нужно придерживаться файлов истории.Однако, если у вас есть некоторые улучшения, которые, по вашему мнению, будут полезны и для моего проекта, не стесняйтесь открывать запрос на включение :) - person Joker; 28.05.2015
comment
Были те же проблемы с извлечением обзора набора изменений: число слишком маленькое, и он пропускает наборы изменений без какого-либо отчета. Число слишком большое, любая ошибка, какая вам нравится: ошибка сервера, ошибка OOM и т. д. Теперь я вызываю fec.exe вместо scm.exe. Кажется, ведет себя немного спокойнее. - person Hennes; 01.06.2015
comment
Спасибо, что поделились с нами этим решением. Это гораздо более применимо, чем решения rtc2git. Но, к сожалению, он такой же медленный, как и оригинальный. В нем были национальные слова, что пришлось исправить в скрипте Migration.pl. И была возможность реализовать функцию маппера, чтобы сохранить первоначальных авторов. - person Zoli; 18.02.2020