Как обещал, выкладываю свой псто о VCS и Битрикс. На истину в последней инстанции он не тянет, но толика здравого смысла в нем, надеюсь есть.
Для самых нетерпеливых: Битрикс повержен
Для менее нетерпеливых: все было не совсем просто, но в итоге система укрощена, а разработанная схема с успехом используется на значительном количестве боевых проектов компании
И да. Цель наших махинаций - получить комбинацию Битрикс+Система Контроля Версий удобную для активной разработки проекта. Подчеркиваю - для разработки, не для бекапов или чего нить еще хитрого
Но не будем спешить. Начнем с начала, а именно...
[spoiler]
Бой первый.
В правом углу ринга боец в синих трусах. 1С-Битрикс. В левом углу - боец в красных трусах. Иииии... Этоооо... SVN!
Первый хук проводит SVN: "svn add htdocs".
Все. Это было фаталити Публика в недоумении...
SVN сломал себе руку, встретившись сжировыми складками накачанным прессом сайта под управлением Системы, а именно - в папках bitrix и upload. Тыща пицот мильёнов папочек. Две тыщи стопицот миллионов файликов в них. SVN в шоке тихо мирно падает в нокаут. Грусть.
Краткое резюме: класть весь проект на битрикс под контроль SVN - плохая затея. Потому что даже если вы дождетесь конца индексации svn add и даже успешно сделаете commit, то работать с такой системой будет решительно невозможно, потому как простейший svn status придется ждать годами.
Ну пускай не годами, но даже минутное ожидание ответа от элементарной команды очень тормозит разработку.
Итог: 1-0 в пользу Битрикса. SVN уносят в свой угол, волоча за красные трусы.
Бой второй. Матч-реванш
В правом углу ринга все те же синие трусы. Фаворит публики - 1С-Битрикс.
А кто же в левом углу? Красные трусы... Загипсованная рука... SVN! На что надеется этот неудачник? Видимо на складной стульчик в левой руке.
Итак, теперь тренер SVN решил действовать хитрее, а именно:
После таких не хитрых манипуляций боя даже не получается. SVN стирает кровь со складного стульчика и, отпихнув рефери, пролазит под канатами.
Судья присуждает победу SVN. 1-1.
Тут самое время возмутиться: "А как же обновления? Как же изменения прав доступа к системным файлам? Как же, собственно, правки этих самых системных файлов (что уже само по себе великий грех) нерадивыми разработчиками?"
Ну что я могу сказать? Все верно, все упреки абсолютно справедливы и принимаются молча Но тут надо вспомнить нашу цель, а именно - удобная для активной разработки комбинация VCS и CMS. А при активной разработке, как показывает практика, заботиться о затертых файлах аплоада или ядра не приходится, потому как вся команда в курсе кто чем занят и кто что может сломать
Итого финальный счет: 1-0,5. Победа в матче присуждена SVN, но в общем зачете ведет Битрикс.
Для буквоежек, лог битвы:
(Тут полный листинг битвы. В командах.)
Краткое резюме: реорганизация файловой структуры проекта позволяет использовать SVN в качестве системы контроля версий на проекте. Такая реорганизация помимо того что сама по себе жизнеспособна,
так еще дает и неплохой бонус при разработке сайта, когда все необходимое лежит под рукой и не приходится лазать по тыще папок в IDE, ища необходимый тебе файл. Бенефит на лицо
Но, как упоминалось выше, есть существенный минус - не весь код находится под контролем.
Ядро, увы, SVN не поддалось.
Общий зачет: 1-0,5 в пользу Битрикса. SVN со сломанной рукой и окровавленным стульчиком, но у Битрикса сломан нос. ^_^
Бой третий. Дер файнал раундЪ
Финал битвы века "Битрикс VS Система Контроля Версий". В роли Битрикса - Битрикс.
В роли VCS - GIT. Черные трусы, заморский говор, все дела.
Итак GIT делает ход конем: "git add ." (добавляем все файлы под контроль) Помним чем это закончилось для SVN? Именно. Две недели заращивали ему правую руку.
Но не тут то было. ГИТ - мужик тертый, и удар проходит. Битрикс согнулся пополам и плюется кровью. Индексация всего сайта вместе с полным набором модулей редакции "Бизнес" заняла примерно две минуты.
Второй удар: "git status". Ответ приходит моментально, Битрикс падает на пол.
У нас новый чемпион! GIT! Поприветствуем! (GIT одергивает черные трусы и, почесывая волосатую грудь, уходит с ринга за поясом чемпиона)
Краткое резюме: GIT отлично зарекомендовал себя как средство для контроля кода Битрикса на наших проектах. Моментальный status, быстрый add, отличный commit, бранчевание. Вобщем все плюшки И огромное количество исходников битрикса нисколько не смутило его
Правда, реорганизованную файловую структуру я таки оставил, но уже не как костыль, а как удобное средство при разработке.
GIT обнимает Битрикс и под торжественную музыку они уходят в светлое будущее.
Итог: 1 - 1,5 в пользу Системы Контроля Версий. ^___^
Дисклеймер: в ходе Битвы Века ни одного Битрикса не пострадало.
------------------
Собственно битва то закончена, но чуть выше я обещал показать результирующую структуру папочек.
Расписывать не буду, думаю все вполне понятно по названию файлов.
Все папочки распихиваем по своим местам симлинками, и в результате имеем очень удобную папку php.inc которую можно просто засинхронизировать в любимую IDE (nuSPhere, eclipse, PhpStorm) и она не сдохнет от папки bitrix и вечных ресканов.
Вот как то так
Для самых нетерпеливых: Битрикс повержен
Для менее нетерпеливых: все было не совсем просто, но в итоге система укрощена, а разработанная схема с успехом используется на значительном количестве боевых проектов компании
И да. Цель наших махинаций - получить комбинацию Битрикс+Система Контроля Версий удобную для активной разработки проекта. Подчеркиваю - для разработки, не для бекапов или чего нить еще хитрого
Но не будем спешить. Начнем с начала, а именно...
[spoiler]
Бой первый.
В правом углу ринга боец в синих трусах. 1С-Битрикс. В левом углу - боец в красных трусах. Иииии... Этоооо... SVN!
Первый хук проводит SVN: "svn add htdocs".
Все. Это было фаталити Публика в недоумении...
SVN сломал себе руку, встретившись с
Краткое резюме: класть весь проект на битрикс под контроль SVN - плохая затея. Потому что даже если вы дождетесь конца индексации svn add и даже успешно сделаете commit, то работать с такой системой будет решительно невозможно, потому как простейший svn status придется ждать годами.
Ну пускай не годами, но даже минутное ожидание ответа от элементарной команды очень тормозит разработку.
Итог: 1-0 в пользу Битрикса. SVN уносят в свой угол, волоча за красные трусы.
Бой второй. Матч-реванш
В правом углу ринга все те же синие трусы. Фаворит публики - 1С-Битрикс.
А кто же в левом углу? Красные трусы... Загипсованная рука... SVN! На что надеется этот неудачник? Видимо на складной стульчик в левой руке.
Итак, теперь тренер SVN решил действовать хитрее, а именно:
- Решено не загонять ядро под SVN целиком, потому как слишком грустно это все и SVN помирает.
- Используем волшебный параметр битрикс BX_PERSONAL_ROOT, позволяющий выносить кастомные файлы и папки проекта во внешнюю (относительно папки bitrix) папку. Вообще говоря, она задумана для организации многосайтовости. Но у SVN в руке складной стул и он не побоится его применить! Так что ему, в общем то, плевать на задумки.
- Реформируем структуру проекта. Все необходимые папки выносим выше уровня htdocs и просто прокидываем их симлинками в папку bitrix. (Про доработанную файловую структуру я напишу чуть ниже. Очень удобно получилось )
- Помещаем папку bitrix/ и upload/ в svn ignore. (Чит, чит.)
После таких не хитрых манипуляций боя даже не получается. SVN стирает кровь со складного стульчика и, отпихнув рефери, пролазит под канатами.
Судья присуждает победу SVN. 1-1.
Тут самое время возмутиться: "А как же обновления? Как же изменения прав доступа к системным файлам? Как же, собственно, правки этих самых системных файлов (что уже само по себе великий грех) нерадивыми разработчиками?"
Ну что я могу сказать? Все верно, все упреки абсолютно справедливы и принимаются молча Но тут надо вспомнить нашу цель, а именно - удобная для активной разработки комбинация VCS и CMS. А при активной разработке, как показывает практика, заботиться о затертых файлах аплоада или ядра не приходится, потому как вся команда в курсе кто чем занят и кто что может сломать
Итого финальный счет: 1-0,5. Победа в матче присуждена SVN, но в общем зачете ведет Битрикс.
Для буквоежек, лог битвы:
(Тут полный листинг битвы. В командах.)
Краткое резюме: реорганизация файловой структуры проекта позволяет использовать SVN в качестве системы контроля версий на проекте. Такая реорганизация помимо того что сама по себе жизнеспособна,
так еще дает и неплохой бонус при разработке сайта, когда все необходимое лежит под рукой и не приходится лазать по тыще папок в IDE, ища необходимый тебе файл. Бенефит на лицо
Но, как упоминалось выше, есть существенный минус - не весь код находится под контролем.
Ядро, увы, SVN не поддалось.
Общий зачет: 1-0,5 в пользу Битрикса. SVN со сломанной рукой и окровавленным стульчиком, но у Битрикса сломан нос. ^_^
Бой третий. Дер файнал раундЪ
Финал битвы века "Битрикс VS Система Контроля Версий". В роли Битрикса - Битрикс.
В роли VCS - GIT. Черные трусы, заморский говор, все дела.
Итак GIT делает ход конем: "git add ." (добавляем все файлы под контроль) Помним чем это закончилось для SVN? Именно. Две недели заращивали ему правую руку.
Но не тут то было. ГИТ - мужик тертый, и удар проходит. Битрикс согнулся пополам и плюется кровью. Индексация всего сайта вместе с полным набором модулей редакции "Бизнес" заняла примерно две минуты.
Второй удар: "git status". Ответ приходит моментально, Битрикс падает на пол.
У нас новый чемпион! GIT! Поприветствуем! (GIT одергивает черные трусы и, почесывая волосатую грудь, уходит с ринга за поясом чемпиона)
Краткое резюме: GIT отлично зарекомендовал себя как средство для контроля кода Битрикса на наших проектах. Моментальный status, быстрый add, отличный commit, бранчевание. Вобщем все плюшки И огромное количество исходников битрикса нисколько не смутило его
Правда, реорганизованную файловую структуру я таки оставил, но уже не как костыль, а как удобное средство при разработке.
GIT обнимает Битрикс и под торжественную музыку они уходят в светлое будущее.
Итог: 1 - 1,5 в пользу Системы Контроля Версий. ^___^
Дисклеймер: в ходе Битвы Века ни одного Битрикса не пострадало.
------------------
Собственно битва то закончена, но чуть выше я обещал показать результирующую структуру папочек.
Расписывать не буду, думаю все вполне понятно по названию файлов.
. |-- htdocs | |-- bitrix | |-- bitrix_personal | `-- upload `-- php.inc |-- admin | |-- ajax_responders | |-- css | `-- js |-- classes |-- components | `-- iv |-- config |-- modules | `-- iv |-- php_interface | |-- admin_header.php | |-- custom_properties | |-- dbconn.php | |-- event_handlers | |-- init.config.php | |-- init.configure.php | |-- init.debug.php | |-- init.event_handlers.php | `-- init.php |-- templates `-- unittests |
Все папочки распихиваем по своим местам симлинками, и в результате имеем очень удобную папку php.inc которую можно просто засинхронизировать в любимую IDE (nuSPhere, eclipse, PhpStorm) и она не сдохнет от папки bitrix и вечных ресканов.
Вот как то так