При подготовке к миграции в Mercurial я хотел бы внести некоторые систематические изменения во многие тысячи, v файлов. (Я буду редактировать копии оригиналов, я спешу добавить.)Сценарий для настройки истории в RCS/CVS, v файл
Примеры сортов изменений я после:
- Для каждого пересмотра сообщение которого начинается с какой-нибудь текст, который указывает на (например,
[Fred Bloggs]
), если имя пользователя в комментарии совпадает с Автором в файле v, затем удалите ненужный текст имени пользователя из сообщения о фиксации. - Если значение v содержит полезное описание, добавьте его в сообщение фиксации для версии 1.1 (cvs2hg игнорирует описание), но многие из наших CVS-файлов действительно поступали из RCS, где было легко помещать начальное сообщение фиксации в описание поле по ошибке)
- Для редактирования, сделанного из определенных общих учетных записей пользователей, настройте автора в зависимости от содержимого сообщения фиксации.
Вещей Я рассмотрел:
- Запуск 'журнал CVS' на каждом человек, v файл - разбор вывода, и с помощью
rcs -m
изменить эту историю. Проблемы с этим включают в себя:- не существует способа передать текстовый файл в
rcs -m
- так что если сообщение о пересмотре содержало выделенные и/или или двойные кавычки или охватывало несколько строк, это было бы довольно вызов, правильно цитирующий его в сценарии - Я не вижу средство rcs или cvs для изменения имени автора, связанного с пересмотром
- Менее важным было бы начать огромное количество процессов, которые, я думаю, может стать медленным
- не существует способа передать текстовый файл в
- Написание Python для анализа ,v file и корректировки е содержание. Проблемы с этим включают в себя:
- У нас есть смесь строк в наших V-файлах, в том числе некоторые двоичные файлы, которые должны были быть текстом, и наоборот - так бы требовалась большая осторожность, чтобы не повредить файлы.
- Необходимо было бы позаботиться о цитировании символа @ в любых сообщениях фиксации, если он упал на начало строки в многострочном комментарии
- уход также понадобился бы при пересмотрах, когда последняя строка зафиксированного файла был изменен и не имеет новой строки - это означает, что v имеет @ в самом конце строки, вместо того, чтобы предшествовать
\n
- Clone версия cvs2hg, что мы используем, и попытаться настроить свой код, чтобы сделать необходимые изменения в месте
Существуют ли какие-либо другие подходы, которые были бы меньше работы, или любой существующий код, который реализует этот вид функциональности?
Спасибо - два очень полезных предложения. –