Присоединиться к двум версиям истории в CVS (или RCS)? - PullRequest
0 голосов
/ 03 августа 2009

Я ищу способ объединить две истории изменений для одного файла.

Один из наших проектов отслеживался через RCS. Сейчас этот проект живет в CVS. Первоначально он был задуман как новый проект. В результате история CVS не показывает более старые ревизии, которые были отслежены через RCS.

Например, предположим, что файл foo.c был пересмотрен 10 раз в RCS, а затем 2 раза в CVS. RCS имеет версии с 1.1 по 1.10, а CVS имеет версии 1.1, 1.2 и 1.3. RCS версии 1.10 и CVS версии 1.1 идентичны.

Я пытаюсь создать комбинированную историю, чтобы foo.c показывал 12 версий с 1.1 по 1.12. Поскольку CVS хранит ревизии в том же формате, что и RCS, нужно просто начать с существующего файла RCS, а затем проверить новые изменения с помощью команды "ci" (сохранение меток времени, идентификаторов пользователей и сообщений коммита) , Любые теги CVS также должны быть сохранены. Этот новый файл RCS будет иметь полную историю, которую затем можно будет добавить в репозиторий CVS, заменив старую версию.

Предположим, что в этой кодовой базе нет ветвей. Просто прямолинейное развитие.

Такая служебная программа уже существует?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2009

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

Или вы можете попробовать инструмент Tailor , который может конвертировать из / во многие системы управления версиями, хотя я не знаю, может ли он также "объединить" две разные истории в одну такую ​​же, как вы надо.

1 голос
/ 18 ноября 2014

Я только что написал библиотеку Python, EditRCS ( PyPi ), для работы с файлами RCS. Пример сценария rcs_join присоединит первую ревизию одного файла RCS к заголовку другого и обновит ревизии веток и тегов.

Надеюсь, это делает то, что вы хотите (хотя, возможно, уже слишком поздно!)

...