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

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

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

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

1. Введение

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

Код PHP:
$a = 123;
$b = $a * 2;

echo "summ = " .($a+$b); 
Потом вышла версия 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) и закачиваем на сайт, заменяя текущие.

Таким вот нехитрым образом можно объединить два дистрибутива. Конечно, чем сильнее вы изменяете движок под себя, тем дольше займет этот процесс, но зато ненужно запоминать где и что вы правили. Используя такую технику вы значительно снизите риск что-либо забыть при обновлении.
Плагин - подсказка о пользователе | Loginza для InstantCMS
Комментарии (10)
0 18 сентября 2009 в 11:39 0
no avatar
Отличная статья. Но ещё наверно стоило написать как всё это проделывать на моём любимом линуксе =)
InstantCMS 18 сентября 2009 в 11:44 0
small user social cms
man diff и все такое ))
Zau4man 18 сентября 2009 в 11:55 0
small user social cms
Спасибо. Будем юзать Araxis Merge
0 18 сентября 2009 в 11:55 0
no avatar
Кстати, вот правильно оформленная статья для блога, содержашая объяснение проблемы, способы реализации и заключительные выводы.
Уважаемы гости и участники проекта, не стоит обижаться на меня, когда я указываю на ваши недочёты и конструктивно воспринимать критику.  v
Светлана Кондратьева 20 сентября 2009 в 18:10 +1
small user social cms
Спасибо! Очень толково и доходчиво))) у нашего админа несомненный и очень яркий талант к педагогике. Вот только мааааалюсенькое замечание можно? Я видела на форумах, посвященных другим системам, что все продукты коллективного творчества систематизированы в одном месте. На нашем же замечательном сайте каждый заводит блог и пишет туда о том, как решил проблему, которая перед ним стояла. Может, пора и для нашей замечательнейшей системы завести подобную штуку? Это не критика, а пожелание! Спасибо.
0 20 сентября 2009 в 19:40 0
no avatar
Уже долгое время пользуюсь программой WinMerge.
Pampa 17 апреля 2011 в 17:48 0
small user social cms
Еще одна программа для сравнения файлов/папок и поиска изменений в файлах.
Программа имеет бесплатную легальную версию, которой вполне хватает для этих задач, а также русский интерфейс и сайт с примерами и объяснениями работы.

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

(Если Администратор сочтет, что третий пост об одном и том же в разных темах будет лишним, прошу удалить.
К сожалению, поиск на нашем сайте работает не очень хорошо, а тема с каждым обновлением является актуальной).
Soviet-Girl 2 мая 2011 в 05:00 0
small user social cms
У меня эта программа почему то неправильно работает - показывает, что практически все файлы изменены, хотя это не так, сравниваю две одинаковые версии движка, чтобы найти только те файлы, которые сама изменяла, а при сравнении файлов пишет, что файлы идентичны, то есть правду.
Till 28 апреля 2011 в 15:42 0
small user social cms
А у меня не отмечает красными точками файлы, которые я изменил.
Patriot 22 сентября 2011 в 19:28 0
small user social cms
Полностью руссифицированая, не требующая лицензионного ключа прога: Araxis_Merge