Объединение кода из нескольких папок

Доброе утро,

Я работаю над устаревшим кодом. Этот унаследованный код состоит из нескольких проектов (язык C с NI LabWindows CVI) и никогда не управлялся в системе управления версиями, а только в папках. Со временем это стало немного беспорядочным, и были созданы копии этой папки, и были внесены изменения во все папки в зависимости от созданного проекта. В результате есть 5 папок, каждая из которых содержит разные базы кодов для того, что когда-то было одним и тем же кодом. Также были изменены многие файлы во всех папках, так как они используются в нескольких проектах. Каждый проект был собран только из 1 из 5 папок (поэтому проект A был создан только в папке 1, проект b в папке 4 и т. д.). Это не только сырой код, но и файлы пользовательского интерфейса.

Я надеюсь, что это было ясно до сих пор.

Моя задача состоит в том, чтобы объединить весь код в одну базу кодов (как это было изначально). И я хотел бы получить некоторые предложения.

Вот план: 1. создать базовую версию одной папки, которая, предположительно, содержит наибольшее количество изменений. 2. создайте репозиторий GIT для хранения кода и всех изменений. 3. просмотрите все папки и объедините файлы в базовую версию, используя программное обеспечение для сравнения файлов. (Папка 1 является базовой, папка 2 объединяется с базовой, папка 3 объединяется с базовой и т. д.)

Есть ли у вас комментарии к этому плану? Что такое хорошо? Плохо? Есть ли инструменты, которые я могу использовать?


person TriceratopsMagician    schedule 19.01.2016    source источник
comment
Не делайте предположений о достоверности содержимого любой из предыдущих папок. Тот факт, что в одном файле .c больше изменений, чем в соответствующем файле .c в другой папке, не означает, что он реализован лучше, чем другой. Начните со списка потребностей пользователя или, если они доступны, исходных спецификаций, в соответствии с которыми было написано программное обеспечение. Затем начните с чистого листа, особенно с файлами UIR. (сбросьте старые и создайте свои собственные. CVI печально известен UIR-совместимостью между версиями. Если вы обнаружите, что старые .c/.h были написаны хорошо, извлеките из них фрагменты, но начните с чистого   -  person ryyker    schedule 22.02.2016
comment
Вы правы насчет предположений. Оригинальных спецификаций нет, потому что это программное обеспечение было разработано на лету и значительно изменено с любой документацией по требованиям или документацией по изменениям. Иногда, когда мне везет, код задокументирован или содержит отметку даты/времени. Иногда, когда мне не так повезло, эти метки данных/времени полностью устарели. В основном, что вы говорите, чтобы переделать все это? (или большую его часть) Кажется, что это вызовет настоящие проблемы, потому что все неписаные требования, которые разрабатывались годами, трудно извлечь из кода.   -  person TriceratopsMagician    schedule 02.04.2016
comment
Если вам нужно сделать это заново, будьте тверды в том, чтобы начать с набора производных требований, прежде чем начинать реализацию в новой версии. В какой-то степени новые требования могут быть получены в результате обратного проектирования, которое вы проведете при оценке исходного кода и определении того, для чего именно он был создан. Кроме того, проконсультируйтесь с любыми другими заинтересованными сторонами (пользователями) программного обеспечения, чтобы узнать, какие существуют недостатки функций, и добавьте их к требованиям. Утверждайте, что его функции не способствуют назначению программного обеспечения, но включите их в дизайн, если они это делают.   -  person ryyker    schedule 02.04.2016
comment
Я буду. На самом деле, хотя мне, вероятно, не нужно будет много переделывать, я начну выводить требования. Почти все знания о том, «как» и «почему» этой системы, являются культурными знаниями и передаются только устно.   -  person TriceratopsMagician    schedule 04.04.2016


Ответы (2)


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

Если есть много изменений в панелях пользовательского интерфейса, это может стать головной болью. Файлы UIR являются двоичными, что делает слияния и сравнения git бесполезными.

Зайдите в каждый проект и под Options->Preferences установите флажок, чтобы сохранить файлы .UIR как файлы .TUI и сохранить проект. Это даст вам текстовый файл, описывающий пользовательский интерфейс, и позволит вам правильно использовать инструменты сравнения.

ИЗМЕНИТЬ

Когда пользовательский интерфейс активен, вы можете напрямую выбрать Options->Save in Text Format, чтобы сделать это одноразово.

Удачи!

person jkuz    schedule 18.03.2016
comment
Спасибо за комментарий и совет относительно файлов .uir. Я не знал об этом. Это очень поможет. - person TriceratopsMagician; 02.04.2016

Также может быть полезно использовать конвертер пользовательского интерфейса в код в меню инструментов CVI, чтобы преобразовать все ваши UIR в код. Это должно сделать их более совместимыми с текстовым управлением исходным кодом (например, подход сохранения в текстовом формате), но также может упростить процесс слияния пользовательских интерфейсов.

person rak0ribz    schedule 03.06.2016