Существует ли современная бесплатная система D?VCS, которая может игнорировать порядковые номера мэйнфреймов?

StackOverflow https://stackoverflow.com/questions/845222

  •  20-08-2019
  •  | 
  •  

Вопрос

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

Эти файлы содержат записи из 80 столбцов, последние 8 столбцов представляют собой практически бессмысленный порядковый номер.

По ряду причин, углубляясь в которые я не хочу тратить место, мне нужно, чтобы виртуальные компьютеры игнорировали (но, надеюсь, сохраняли каким-то четко определенным образом) столбцы порядковых номеров, а также выполняли различия и исправления, основываясь только на содержимое первых 72 столбцов.

Есть идеи?


Просто чтобы уточнить «игнорировать, но сохранять»:Я понимаю, что это немного расплывчато, поскольку я еще не полностью собрал свои идеи.

Это было бы что-то вроде этого:

«При слиянии/исправлении, если у одной стороны есть порядковые номера, выведите их;если более чем одна сторона имеет порядковые номера, используйте те, которые присутствуют в файле (1|2|3)"


Почему я хочу сохранить порядковые номера?Во-первых, они действительно являются порядковые номера.Во-вторых, я хочу реинтегрировать все это обратно в мэйнфрейм, где порядковые номера могут иметь очень большое значение.(Те из вас, кто знает, что означает «SMP/E», поймут.Те, кто нет, радуются, но трепещут...)


Я только что понял, что не принял ответ.Трудный выбор, но @Noldorin ближе всего подходит к тому, куда мне нужно идти.

Это было полезно?

Решение

Я считаю, что любая современная система контроля версий (Подрывная деятельность и Базар те, которые я обычно рекомендую, поскольку централизованный и распределенный соответственно) может использовать внешний инструмент сравнения/слияния.К сожалению, я думаю, вам придется написать этот собственный инструмент слияния самостоятельно (по крайней мере, я никогда не слышал о таком, который делает то, что вам нужно), хотя я думаю, что это не должно быть огромной задачей.Сказав это, возможно, вам повезет с рекомендациями, приведенными в этот вопрос StackOverflow а также Вот этот.К сожалению, я не могу предоставить никакой дополнительной информации о том, какие из них вы захотите изучить конкретно, но стоит просмотреть их на случай, если какой-либо из них действительно удовлетворит ваши требования.

Другие советы

В Mercurial вы можете легко игнорировать столбцы 73-го конца файлов .asm — просто добавьте в свой .hgrc следующие строки:

[encode]
*.asm: cut -b -72

(или немного более сложные способы, если вы также хотите поддерживать системы Windows ;-).Однако это не соответствует части «сохранять» вашей спецификации «игнорировать, но сохранять» (что, как указывает комментарий Нила, само по себе несколько проблематично).

Я думаю, что значение слова «сохранить» здесь является ключевым.Когда вы говорите, что порядковые номера «почти бессмысленны», включает ли это «почти» что-нибудь, кроме последовательности?Во времена снов мы кодировали там своего рода блок-схему программы (вы можете найти пример в первом издании «Мифического человеко-месяца» Брукса), но эта практика, к счастью, вымерла.

Если единственное значение столбцов порядковых номеров - это упорядоченная последовательность чисел.У меня возникнет соблазн использовать подход @Alex — вы можете предварительно обработать файлы из сценария в любом из современных инструментов VC — чтобы вырезать порядковые номера, а затем, когда вы извлекаете файл, используйте аналогичный инструмент для повторного упорядочивания записей.

(Раскрытие информации:Я представляю поставщика инструмента, описанного в этом ответе).

Вам нужен инструмент сравнения, который понимает, что данные в столбцах 72–80 являются «пробелами», независимо от того, что вы заполнили их символами.

А Семантические проекты COBOL Smart Differencer есть вариант IBM Enterprise COBOL, который прекрасно это понимает.

SD создает интеллектуальные дифференциаторы для различных языков, а IBM Assembler является целью будущего.Если вам интересно, свяжитесь с SD в автономном режиме для обсуждения Smart Differencer для IBM Assembler.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top