Рекомендации по переносу пользовательских модов кода в новый основной выпуск программного обеспечения с открытым исходным кодом?
У меня (грязная) производственная установка форума Simple Machines Forum (SMF 1.1.13). Это была чистая установка, однажды... около пяти лет, двадцать обновлений и 40 модов назад. Не говоря уже о пользовательском коде, который был исправлен непосредственно в базе кода. Это началось как забавный побочный проект, и на начальном этапе не было никаких методов управления кодом.
Теперь SMF 2 (становится ближе) начинает работать, и я хочу обновить его. Но не оставляя пользовательских функций позади.
Продолжайте читать, это общий вопрос управления программным обеспечением, а не вопрос поддержки SMF...
Я пытаюсь найти лучший способ перенести пользовательские функции в новую ветку кода.
- В некоторых случаях пользовательская функциональность 1.1.x уже существует в 2.0. У меня нет работы для меня!
- В некоторых случаях появятся мод-пакеты с версией 2.0, и я могу просто установить их непосредственно в чистой сборке SMF 2. Да, минимальная работа для меня!
- В некоторых случаях порт кода будет довольно простым между двумя версиями (например, несколько небольших изменений в запросах или построении глобальной переменной). (Я перенес несколько функций / модов обратно с 2.0 на 1.1.x, поэтому я начинаю знакомиться с ним.)
- В некоторых случаях мне просто нужно перестроить функции в основном с нуля.
Этими двумя вариантами будет сложно управлять.
Любые предложения о том, как перенести большое количество изменений из одной ветви в другую? Когда это не мой собственный внутренний код. Вот мой первоначальный план:
- Разница между чистой версией 1.1.x и моим "грязным" рабочим кодом
- Сопоставьте каждую строку diff с функцией ("Это обновление кода - это особенность тегов, нужно будет построчно портировать его, а это - галерея, я, вероятно, могу установить обновленный мод".) Это будет SOMUCHEASIER если бы существовал инструмент сравнения, который генерировал консолидированный отчет, вместо того, чтобы просматривать множество файлов по одному. Поиски Google и SO не нашли такого инструмента... Есть ли такой?
- Установите чистую ветку 2.0
- Установите доступные обновленные моды
- Сверните мои рукава и просмотрите все функции различий (вот почему? Мне нужен сводный отчет различий. Было бы адски делать страницу за страницей.) И встроить их обратно.
Есть идеи получше? (Указатели на выпуск информации об управлении приветствуются, хотя, конечно, с оговоркой, что это на самом деле не мой код, поэтому у меня ограниченный контроль.)
Иначе? Я боюсь, что мои варианты - отказаться от пользовательских функций (не реально выполнимо) или остаться на старой ветке. Оба сосут. Помогите!
tl; dr: Укажите мне на инструмент сравнения, который будет делать консолидированные отчеты по файлам для всех каталогов. И / или помогите мне найти более простой способ переноса моего пользовательского кода.
1 ответ
Ваш план, как правило, наиболее практичный подход, хотя я бы сказал, что вы идете в неправильном направлении, ища различия на уровне кода. Без контроля версий в течение срока действия проекта и без краткой записи о внесенных изменениях, при изучении различий на уровне кода вы ищете уровень детализации, который может не дать вам информацию, необходимую для применения тех же изменений в новой реализации.,
Отойдите от размышлений об изменениях на уровне кода и подумайте об особенностях уровня приложения и поведенческих изменениях. Какие функции внесены ваши изменения? Каким образом ваше приложение теперь ведет себя по-разному из-за ваших изменений?
Вы говорите, что за длительный период произошло много необратимых изменений - вам не удастся найти все изменения, независимо от того, какие инструменты у вас есть в вашем распоряжении, и вам все равно нужно будет рассмотреть существующие функциональные и поведенческие изменения, чтобы полностью представить одно и то же особенности и поведение в любой обновленной реализации.
Вы хорошо знаете свое приложение, используете его и цените внесенные вами изменения в функции, даже если вы этого не понимаете.
- Установите выпуск vanilla 2.0
- Примените все соответствующие моды
- Примените соответствующий стиль
- Используйте новую систему, отметьте различия в поведении и разработайте из этого набор необходимых функций.
Ваш набор функций не должен быть полным - не останавливайтесь на этапе попытки выяснить все необходимые изменения, это займет слишком много времени.
- Применять функции, собранные из последних отзывов (в идеале через обратимые моды)
- Обратите внимание на различия в поведении при разработке из этого набора необходимых функций
- Повторение