Xpoint
   [напомнить пароль]

Эффективное использование SVN

Метки: [без меток]
2006-07-05 12:58:09 [обр] Superman(0/16)[досье]

Стоит задача с малыми потерями сделать апгрейд CMS Joomla! с версии 1.0.7 до 1.0.10.
Проблема в том, что ядро системы (примем за "ядро" весь стандартный пакет Joomla!) в некоторых местах подправлено и тупым накатом сделать это не получиться.

Имеется SVN. Подскажите пжл как можно используя SVN ускорить процесс апгрейда?

У меня всего три сайта. Первый сайт я апгрейдил практически вручную: скачал пакет апгрейда и стал сравнивать (через соотв. ф-ию total commander) по содержимому файлы и вручную вносить изменения (т.к. некоторые файлы содержат и наш специфичный код).
На это было убито оч. много времени и хотелось бы найти более оптимальный способ.

спустя 1 час 29 минут [обр] Thirteensmay(0/157)[досье]

Ох не делал бы я так... Всмысле самостоятельной подправки ядра а потом его апгрейд. Вопервых приемлемо автоматизировать в любом случае не получится, первый блин всегда будет вручную, потому как никто кроме Вас не знает что Вы там правили. Дальше конечно по образцу можно клонировать, или задавать список обновляемых файлов, но не это главное: Где гарантия что очередной апгрейд не станет конфликтовать с Вашими правками ? Т.е. например какой-либо обновляемый компонент подразумевает что его модули (зависимости) были также предварительно обновлены (допустим в зависимостях был изменен некий функционал, и обновляемый модуль работает в расчете на эти изменения), а на самом деле т.к. Вами была произведена оригинальная правка зависимости, она не обновлялась, соответственно в ней нет того функционала который требуется для корректной работы модуля после обновления, короче мраки. В Вашем случае cистема обновления должна как минимум понимать некие условные конструкции и сам код должен их поддерживать, т.е. что то типа мэйкфайлов. Насколько я понимаю это далеко не SVN. Или я чего неправильно понял ?

Подробная Русская дока по SVN: http://svnbook.red-bean.com/nightly/ru/svn-book.html

Обратите внимание на этот текст во Введении (Что такое Subversion ?):

Некоторые системы управления версиями выступают также в качестве систем управления конфигурацией программного обеспечения (SCM[4]). Такие системы специально созданы для управления деревьями исходного кода и обладают множеством особенностей, непосредственно относящихся к разработке программного обеспечения: они понимают языки программирования и предоставляют инструменты для сборки программ. Subversion не является такой системой...
спустя 9 минут [обр] Superman(0/16)[досье]

Thirteensmay[досье] всё, что Вы написали и так понятно и все делается со всеми этими учтенностями. Т.е. апгрейд потом еще тестируется и т.п. Плюс наша сторона ессно отстаивала позицию что обновлять уже опасно, т.к. нет гарантий что не возникнут конфликты (эти джумлисты например очень злостно подшутили в версии 1.0.10, серьезно изменив одну из самых часто используемых ф-ий, кот. обрабатывает такие переменные как POST, GET, в итоге почти все сторонние компоненты ведут себя неадекватно :)).

В общем, наши заказчики каким-то чудом нарвались на сайт www.joomla.org именно в тот день когда была анонсирована новая версия (там красными шрифтами написано "Ахтунг! Минен! Всем срочно апгрейд!") и нам приходица теперь трахаца с этим всем :(

спустя 10 минут [обр] Thirteensmay(0/157)[досье]
Ну правильно, трахаетесь потому что на голову больны, ну ктож ядро то правит ??? Выносите необходимый Вам функционал во внешние модули. Конечно можно придумать нечто мегаумное, но накой Вам этот геморрой ? Я понимаю что лень переделывать, проще тянуть резину пока тянется. Но последствия то Вы знаете... Вон, они у Вас только начинаются. И еще, нехрен потокать тупым заказчикам, не можете отстоять свою точку зрения - никто Вам и не виноват.
спустя 11 минут [обр] Superman(0/16)[досье]
Разговор переходит не в то русло.
спустя 35 минут [обр] Thirteensmay(0/157)[досье]
Собирайте одну копию ручками, а потом с нее апгрейдитесь.
спустя 2 минуты [обр] Superman(0/16)[досье]
Это я и делал первый раз.
На это ушло слишком много времени.
спустя 19 минут [обр] Thirteensmay(0/157)[досье]
Вот я Вам и говорю, либо делайте нормально (не правьте ядро), либо возьмите что нибудь поинтеллектуальнее SVN, и огребайте геморрой другого плана. SVN в Вашем случае IMHO нипричем. Вы собираетесь автоматизировать анализ ? Ну что нибудь типа LISP или PROLOG рекомендую ;)
спустя 3 часа 42 минуты [обр] Закиров Руслан(0/341)[досье]

Можно использовать SVK. Который поддерживает мерджинг из трех источников. Схема такая.
Делаем зеркало svn репозитория joomla, потом копируем ревизию соответствующую версии 1.0.7, делаем чекаут и всем скопом или по патчу вносим в копию все ваши изменения, то есть получаем такую картину:

joomba ----- 1.0.7 ----....----1.0.10
               |
             svk copy
               |
               +-> 1.0.7 --- +local

Потом выполняем svk smerge -Il //jumba/mirror //jumba/local. Это команда ревизию за ревизией будет портировать в вашу копию, в случае нахождения конфликтов (изменений, а не логических) вам будет предложено их исправить, для этого можно на выбор использовать ряд утилит (KDiff3, meld, vimdiff... или просто редактор). Можно конечно все изменения скопом занести, но так сложнее уследить что наменяли разработчики.

Такая схема поможет вам и в дальнейшем синхронизировать изменения.

спустя 16 часов [обр] Superman(0/16)[досье]
Это похоже на branches в SVN :)
спустя 2 часа 54 минуты [обр] Закиров Руслан(0/341)[досье]
В SVN нету операции branch, там есть операция копирования, то есть ветки ничем не отличаются от копий. SVK - это расширение svn, которое решает вопросы distributed development. Не буду заниматься рекламой, я просто предложил решение, которое использую сам в похожих случаях.
Powered by POEM™ Engine Copyright © 2002-2005