Обновляемся правильно

+26
4.5K
Многие часто спрашивают на форуме как обновлять систему, если в файлы вносились какие-либо изменения. Так же постоянно возникают просьбы выкладывать список измененных файлов при выпуске версий. Этот пост призван помочь делать это самостоятельно.

В этом посте мы посмотрим как:

1. узнать какие файлы изменились в новом дистрибутиве
2. быстро обновить файлы сайта, не теряя собственных изменений в них

1. Введение

Для начала сформулируем начальные условия. Допустим, у нас имеется сайт, работающий на версии 1.5.1 и в некоторые php-файлы мы вносили изменения. Чтобы быть более конкретными, давайте представим что мы изменили файл /admin/applets/arhive.php, добавив в него такой код:

  1.  
  2. $a = 123;
  3. $b = $a * 2;
  4.  
  5. echo "summ = " .($a+$b);
  6.  
Потом вышла версия 1.5.2 и нам нужно обновиться на нее, не потеряв этих изменений.

Для пользователей Linux эта задача является одной из тривиальных, поскольку в их распоряжении есть такие замечательные комманды как diff и patch. Любителям Windows в этом плане везет меньше, но решения тоже есть.

2. Устанавливаем Araxis Merge

Под Windows есть несколько программ, позволяющих сравнивать текстовые файлы и папки. Araxis Merge платная программа, но очень удобная (спасибо bibendi, который порекомендовал ее на форуме). На сайте программы можно получить пробный серийник, который позволит ей работать без ограничений целых 30 дней. Что делать потом — думаю все догадываются :)

Действуем:

1. Скачиваем Araxis Merge (~68mb)
2. Запрашиваем 30-дневный серийный номер (достаточно просто указать email и номер придет в письме)

Если Araxis Merge по каким-то причинам вас не устроит, можете поискать аналоги, коих немало (например WinMerge или WinDiff).

3. Подготавливаем файлы

Удобнее всего создать две папки рядом, и назвать их номерами версий, в нашем случае 151 и 152. В папку 151 кладем наши текущие файлы. В папку 152 распаковываем архив, скачанный с этого сайта.

4. Сравниваем папки

Открываем Araxis Merge и на тулбаре жмем кнопку "Folder Comparsion". Затем указываем пути к нашим папкам: 151 (левая панель) и 152 (правая панель), затем жмем Enter. Программа покажет содержимое обеих папок, а файлы имеющие отличия будут подсвечены синими строками. Для наглядности см. скриншот:

Иллюстрация

5. Переносим наши правки

Обратите внимание на файл arhive.php на скриншоте выше. Как можно заметить, в левой панели (т.е. в нашей текущей версии) в нем есть изменения, которых нет в дистрибутиве. Об этом говорит красная точка на иконке файла.

Если дважды щелкнуть по файлу arhive.php, откроется окно сравнения файлов:

Иллюстрация

Наши изменения, сделанные в п.1 подсвечены зеленым цветом.

Чтобы внести эти изменения в файл из новой версии, нужно:

1. кликнуть по кнопочке со стрелкой
2. поместить курсор в правую панель
3. нажать кнопку "Сохранить" на тулбаре

Эта последовательность действий изображена на скриншоте:

Иллюстрация

После этого возвращаемся к просмотру папок и ищем следующий файл с красной точкой в левой панели и повторяем п.5.
Естесственно, что переносить строки из старого файла в новый стоит только тогда, когда вы уверены что эти строки были написаны/изменены вами.

6. Заключение

Когда перенос изменений завершен, просто забираем файлы из новой папки (152) и закачиваем на сайт, заменяя текущие.

Таким вот нехитрым образом можно объединить два дистрибутива. Конечно, чем сильнее вы изменяете движок под себя, тем дольше займет этот процесс, но зато ненужно запоминать где и что вы правили. Используя такую технику вы значительно снизите риск что-либо забыть при обновлении.
0
15 лет назад #
Отличная статья. Но ещё наверно стоило написать как всё это проделывать на моём любимом линуксе =)
0
InstantCMS InstantCMS 15 лет назад #
man diff и все такое ))
0
Zau4man Zau4man 15 лет назад #
Спасибо. Будем юзать Araxis Merge
0
15 лет назад #
Кстати, вот правильно оформленная статья для блога, содержашая объяснение проблемы, способы реализации и заключительные выводы.
Уважаемы гости и участники проекта, не стоит обижаться на меня, когда я указываю на ваши недочёты и конструктивно воспринимать критику. v
+1
Светлана Кондратьева ✝️ Светлана Кондратьева ✝️ 15 лет назад #
Спасибо! Очень толково и доходчиво))) у нашего админа несомненный и очень яркий талант к педагогике. Вот только мааааалюсенькое замечание можно? Я видела на форумах, посвященных другим системам, что все продукты коллективного творчества систематизированы в одном месте. На нашем же замечательном сайте каждый заводит блог и пишет туда о том, как решил проблему, которая перед ним стояла. Может, пора и для нашей замечательнейшей системы завести подобную штуку? Это не критика, а пожелание! Спасибо.
0
15 лет назад #
Уже долгое время пользуюсь программой WinMerge.
0
Pampa Pampa 13 лет назад #
Еще одна программа для сравнения файлов/папок и поиска изменений в файлах.
Программа имеет бесплатную легальную версию, которой вполне хватает для этих задач, а также русский интерфейс и сайт с примерами и объяснениями работы.

Смотреть вот здесь: http://www.comparesuite.ru/,
скачивать бесплатную полную версию - на сайте разработчика:http://www.comparesuite.com/download.htm ,
здесь выбираем бесплатную Light-версию.

(Если Администратор сочтет, что третий пост об одном и том же в разных темах будет лишним, прошу удалить.
К сожалению, поиск на нашем сайте работает не очень хорошо, а тема с каждым обновлением является актуальной).
0
Soviet-Girl Soviet-Girl 13 лет назад #
У меня эта программа почему то неправильно работает - показывает, что практически все файлы изменены, хотя это не так, сравниваю две одинаковые версии движка, чтобы найти только те файлы, которые сама изменяла, а при сравнении файлов пишет, что файлы идентичны, то есть правду.
0
Till Till 13 лет назад #
А у меня не отмечает красными точками файлы, которые я изменил.
0
Patriot Patriot 13 лет назад #
Полностью руссифицированая, не требующая лицензионного ключа прога: Araxis_Merge

Еще от автора

Каталог специалистов на instantcms.ru
Всем привет. Спешим сообщить что начиная с сегодняшнего дня на этом сайте заработал новый раздел - Каталог специалистов.
Важно! Обновление безопасности
Один внимательный человек, имя которого мне, к сожалению, не известно обнаружил уязвимость, позволяющую залить и использовать шелл на сайте.
Обновляем jQuery до 1.5.2
В дистрибутиве InstantCMS достаточно старая версия jQuery 1.2.5. Это доставляет множество неудобств при использовании новых плагинов.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.