SlideShare a Scribd company logo
Gitify – швейцарский
нож для MODX-воина
Вооруженный до зубов Иван Климчук
1
Как делаются проекты на MODX?
• Х*к-х*к и в продакшн!
• Разработка в команде: waterfall, scrum, canban и тд.
• Длительная поддержка и развитие
2
3
Решения
• Teleport
• Teleport
• SE Manager (умер)
• ElementHelper
• Cast (похоже тоже умер)
• и другие
4
Code review
5
Code review
• дешевый поиск ошибок
• сохранность качества кода
• непрерывный процесс обучения
• коммуникация внутри команды
6
7
Git и GitHub
8
Gitify
Основная задача Gitify – это собрать элементы действующего сайта в
понятный человеку формат, сохранить в файлы и точно так же
восстановить сайт из файлов, но уже в другом месте (на боевом
сервере, например). Важное в этом процессе — читаемый формат и то,
что версиями этих файлов можно управлять посредством git.
9
10
Историческая справка
• Первый коммит 1 июня 2014 года
• Анонс на MODX Weekend в сентябре 2014
• Документация на русском летом 2015
• 11 минорных версий, стабильная 1.0 на подходе
11
gitify init
Установка
Для начала нужно установить Composer – менеджер пакетов для PHP.
git clone https://github.com/modmore/Gitify.git gitify
cd gitify
compser install
chmod +x Gitify
Можно настроить alias в .bashrc или .bash_profile
01.
02.
03.
04.
05.
12
Настройка и конфигурация
Вся конфигурация сайта хранится в файле .gitify в формате YAML.
data_directory: _data/
data:
templates:
class: modTemplate
primary: templatename
extension: .html
01.
02.
03.
04.
05.
06.
13
Что может: build/extract
gitify extract
gitify build
gitify build --force
gitify build --skip-clear-cache
gitify build --force --no-backup
01.
02.
03.
04.
05.
14
Что может: backup/restore
gitify backup
gitify backup name
gitify restore
gitify restore name
gitify restore last
01.
02.
03.
04.
05.
15
Что может: modx:install и
modx:upgrade
gitify modx:install
gitify modx:install 2.4.2-pl
gitify modx:install latest
gitify modx:install --download
gitify modx:upgrade
gitify modx:upgrade --download
01.
02.
03.
04.
05.
06.
16
Что может: package:install
gitify package:install packagename
gitify package:install --all
gitify package:install --all --interactive
01.
02.
03.
17
Как быть с одинаковыми ID?
Объект, ID которого уже существует, временно сохраняется в памяти.
После полного завершения остальной сборки, включая очистку, gitify
пытается разрешить конфликт. В случае перемещения или
переименования объекта, после очистки "старый" объект будет удален,
а новый будет вставлен правильно. Если же конфликт на самом деле
есть, сохраненный в памяти объект будет вставлен с новым ID и для
него будет запущена команда gitify extract .
18
Автоочистка
Удаляются все ресурсы, которым на найдено соответствие в файлах.
Очистку в момент сборки можно отключить передав параметр --no-
cleanup .
19
Где применять?
• Работа над проектом из IDE + code review
• Работа над проектом в команде: N*dev, M*stage, production
• Установка и обновление MODX
• Установка и обновление пакетов
• Создание резервных копий через backup/restore или через git
20
21
bit.ly/gitifydocs
22
Demo
Планы по развитию
• Доработать управление пакетами: установка локальных, добавить
параметр --save, добавить сохранение в конфигурацию уже
установленных пакетов
• Доработать существующие функции и исправить баги
• Добавить работу со схемами БД для более аккуратной работы с
данными
• Улучшить документацию
23
Контакты
• iklimchuk – Twitter
• Alroniks – GitHub
• klimchuk.com
• ivan@klimchuk.com
alroniks
24
25
26
Вопросы?
Презентация
на GitHub

More Related Content

What's hot

GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?
Tados
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2Tag
OSLL
 
Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)
Sergey Chudakov
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
DressTester
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с Git
Denis Latushkin
 
Фламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньФламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый день
DevDay
 
JSSDK: Начало
JSSDK: НачалоJSSDK: Начало
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
ScrumTrek
 
Continuous Integration в мобильной разработке
Continuous Integration в мобильной разработкеContinuous Integration в мобильной разработке
Continuous Integration в мобильной разработке
Anton Maksimov
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
Andrey Markelov
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
OpenVZ
 
Enterprise-инфраструктура менеджмента php-пакетов в рамках компании
Enterprise-инфраструктура менеджмента php-пакетов в рамках компанииEnterprise-инфраструктура менеджмента php-пакетов в рамках компании
Enterprise-инфраструктура менеджмента php-пакетов в рамках компании
Evgeny Fomin
 
Docker. Основы
Docker. ОсновыDocker. Основы
Docker. Основы
Ivan Miniailenko
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?
Ruslan Sharipov
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
Andrey Markelov
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
MoscowJS
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)
AvitoTech
 
Что такое Docker
Что такое DockerЧто такое Docker
Что такое Docker
Pavel Klimiankou
 
Обзор Linux Control Groups
Обзор Linux Control GroupsОбзор Linux Control Groups
Обзор Linux Control Groups
OSLL
 

What's hot (19)

GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?GIT: что внутри, и как это работает?
GIT: что внутри, и как это работает?
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2Tag
 
Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с Git
 
Фламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый деньФламп на спидах или ка релизить каждый день
Фламп на спидах или ка релизить каждый день
 
JSSDK: Начало
JSSDK: НачалоJSSDK: Начало
JSSDK: Начало
 
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
 
Continuous Integration в мобильной разработке
Continuous Integration в мобильной разработкеContinuous Integration в мобильной разработке
Continuous Integration в мобильной разработке
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
Enterprise-инфраструктура менеджмента php-пакетов в рамках компании
Enterprise-инфраструктура менеджмента php-пакетов в рамках компанииEnterprise-инфраструктура менеджмента php-пакетов в рамках компании
Enterprise-инфраструктура менеджмента php-пакетов в рамках компании
 
Docker. Основы
Docker. ОсновыDocker. Основы
Docker. Основы
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)
 
Что такое Docker
Что такое DockerЧто такое Docker
Что такое Docker
 
Обзор Linux Control Groups
Обзор Linux Control GroupsОбзор Linux Control Groups
Обзор Linux Control Groups
 

Similar to Gitify - швейцарский нож для MODX-воина

что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним боротьсяВладимир Кожаев
 
Git for you
Git for youGit for you
Git for you
Pavel Alexeev
 
Git presentation
Git presentationGit presentation
Git presentation
Alexandr Babenko
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающих
Vadim Drobinin
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
Egor Stremousov
 
Git и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаGit и GitHub для создания учебного контента
Git и GitHub для создания учебного контента
Пупена Александр
 
Git - Вадим Валуев
Git - Вадим ВалуевGit - Вадим Валуев
Git - Вадим Валуев
DrupalCamp MSK
 
Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)
Андрей Кухаренко
 
Controlul versiunilor
Controlul versiunilor Controlul versiunilor
Controlul versiunilor
Dmitrii Stoian
 
Giflow
GiflowGiflow
Giflow
Egor Petrov
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
Magecom UK Limited
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
Кирилл Борисов
 
Как не подавиться большим старым проектом
Как не подавиться большим старым проектомКак не подавиться большим старым проектом
Как не подавиться большим старым проектом
Andrey Karpov
 
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
Как не подавиться большим старым проектом. Юрий Минаев ➠  CoreHard Autumn 2019Как не подавиться большим старым проектом. Юрий Минаев ➠  CoreHard Autumn 2019
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
corehard_by
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
Yulia Tsisyk
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
MskDotNet Community
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)
Ilya V
 
Mercurial vs Git
Mercurial vs GitMercurial vs Git
Mercurial vs Git
Igor Khomenko
 

Similar to Gitify - швейцарский нож для MODX-воина (20)

что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
 
Git for you
Git for youGit for you
Git for you
 
Git presentation
Git presentationGit presentation
Git presentation
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающих
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
 
Git и GitHub для создания учебного контента
Git и GitHub для создания учебного контентаGit и GitHub для создания учебного контента
Git и GitHub для создания учебного контента
 
Git - Вадим Валуев
Git - Вадим ВалуевGit - Вадим Валуев
Git - Вадим Валуев
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
GitFlow_MOEX
GitFlow_MOEXGitFlow_MOEX
GitFlow_MOEX
 
Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)Начало работы с Git (версия 2016)
Начало работы с Git (версия 2016)
 
Controlul versiunilor
Controlul versiunilor Controlul versiunilor
Controlul versiunilor
 
Giflow
GiflowGiflow
Giflow
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
 
Как не подавиться большим старым проектом
Как не подавиться большим старым проектомКак не подавиться большим старым проектом
Как не подавиться большим старым проектом
 
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
Как не подавиться большим старым проектом. Юрий Минаев ➠  CoreHard Autumn 2019Как не подавиться большим старым проектом. Юрий Минаев ➠  CoreHard Autumn 2019
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
GIT Slides (25.03.2015)
GIT Slides (25.03.2015)GIT Slides (25.03.2015)
GIT Slides (25.03.2015)
 
Mercurial vs Git
Mercurial vs GitMercurial vs Git
Mercurial vs Git
 

More from MODX Беларусь

modmore Team Time
modmore Team Timemodmore Team Time
modmore Team Time
MODX Беларусь
 
История возникновения и развития связки Modstore — Modx.pro — Modhost
История возникновения и развития связки Modstore — Modx.pro — ModhostИстория возникновения и развития связки Modstore — Modx.pro — Modhost
История возникновения и развития связки Modstore — Modx.pro — Modhost
MODX Беларусь
 
Sterc Team Time
Sterc Team TimeSterc Team Time
Sterc Team Time
MODX Беларусь
 
E-commerce проекты 15000+ товаров в полной интеграции с 1С
E-commerce проекты 15000+ товаров в полной интеграции с 1СE-commerce проекты 15000+ товаров в полной интеграции с 1С
E-commerce проекты 15000+ товаров в полной интеграции с 1С
MODX Беларусь
 
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелитьсяСинхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
MODX Беларусь
 
miniShop2 – что нас ждет в новых версиях
miniShop2 – что нас ждет в новых версияхminiShop2 – что нас ждет в новых версиях
miniShop2 – что нас ждет в новых версиях
MODX Беларусь
 
MIGX. Табличный тип данных в MODX - MODX Meetup Minsk
MIGX. Табличный тип данных в MODX - MODX Meetup MinskMIGX. Табличный тип данных в MODX - MODX Meetup Minsk
MIGX. Табличный тип данных в MODX - MODX Meetup Minsk
MODX Беларусь
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
MODX Беларусь
 

More from MODX Беларусь (8)

modmore Team Time
modmore Team Timemodmore Team Time
modmore Team Time
 
История возникновения и развития связки Modstore — Modx.pro — Modhost
История возникновения и развития связки Modstore — Modx.pro — ModhostИстория возникновения и развития связки Modstore — Modx.pro — Modhost
История возникновения и развития связки Modstore — Modx.pro — Modhost
 
Sterc Team Time
Sterc Team TimeSterc Team Time
Sterc Team Time
 
E-commerce проекты 15000+ товаров в полной интеграции с 1С
E-commerce проекты 15000+ товаров в полной интеграции с 1СE-commerce проекты 15000+ товаров в полной интеграции с 1С
E-commerce проекты 15000+ товаров в полной интеграции с 1С
 
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелитьсяСинхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
 
miniShop2 – что нас ждет в новых версиях
miniShop2 – что нас ждет в новых версияхminiShop2 – что нас ждет в новых версиях
miniShop2 – что нас ждет в новых версиях
 
MIGX. Табличный тип данных в MODX - MODX Meetup Minsk
MIGX. Табличный тип данных в MODX - MODX Meetup MinskMIGX. Табличный тип данных в MODX - MODX Meetup Minsk
MIGX. Табличный тип данных в MODX - MODX Meetup Minsk
 
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
 

Gitify - швейцарский нож для MODX-воина

  • 1. Gitify – швейцарский нож для MODX-воина Вооруженный до зубов Иван Климчук 1
  • 2. Как делаются проекты на MODX? • Х*к-х*к и в продакшн! • Разработка в команде: waterfall, scrum, canban и тд. • Длительная поддержка и развитие 2
  • 3. 3
  • 4. Решения • Teleport • Teleport • SE Manager (умер) • ElementHelper • Cast (похоже тоже умер) • и другие 4
  • 6. Code review • дешевый поиск ошибок • сохранность качества кода • непрерывный процесс обучения • коммуникация внутри команды 6
  • 8. 8
  • 9. Gitify Основная задача Gitify – это собрать элементы действующего сайта в понятный человеку формат, сохранить в файлы и точно так же восстановить сайт из файлов, но уже в другом месте (на боевом сервере, например). Важное в этом процессе — читаемый формат и то, что версиями этих файлов можно управлять посредством git. 9
  • 10. 10
  • 11. Историческая справка • Первый коммит 1 июня 2014 года • Анонс на MODX Weekend в сентябре 2014 • Документация на русском летом 2015 • 11 минорных версий, стабильная 1.0 на подходе 11
  • 12. gitify init Установка Для начала нужно установить Composer – менеджер пакетов для PHP. git clone https://github.com/modmore/Gitify.git gitify cd gitify compser install chmod +x Gitify Можно настроить alias в .bashrc или .bash_profile 01. 02. 03. 04. 05. 12
  • 13. Настройка и конфигурация Вся конфигурация сайта хранится в файле .gitify в формате YAML. data_directory: _data/ data: templates: class: modTemplate primary: templatename extension: .html 01. 02. 03. 04. 05. 06. 13
  • 14. Что может: build/extract gitify extract gitify build gitify build --force gitify build --skip-clear-cache gitify build --force --no-backup 01. 02. 03. 04. 05. 14
  • 15. Что может: backup/restore gitify backup gitify backup name gitify restore gitify restore name gitify restore last 01. 02. 03. 04. 05. 15
  • 16. Что может: modx:install и modx:upgrade gitify modx:install gitify modx:install 2.4.2-pl gitify modx:install latest gitify modx:install --download gitify modx:upgrade gitify modx:upgrade --download 01. 02. 03. 04. 05. 06. 16
  • 17. Что может: package:install gitify package:install packagename gitify package:install --all gitify package:install --all --interactive 01. 02. 03. 17
  • 18. Как быть с одинаковыми ID? Объект, ID которого уже существует, временно сохраняется в памяти. После полного завершения остальной сборки, включая очистку, gitify пытается разрешить конфликт. В случае перемещения или переименования объекта, после очистки "старый" объект будет удален, а новый будет вставлен правильно. Если же конфликт на самом деле есть, сохраненный в памяти объект будет вставлен с новым ID и для него будет запущена команда gitify extract . 18
  • 19. Автоочистка Удаляются все ресурсы, которым на найдено соответствие в файлах. Очистку в момент сборки можно отключить передав параметр --no- cleanup . 19
  • 20. Где применять? • Работа над проектом из IDE + code review • Работа над проектом в команде: N*dev, M*stage, production • Установка и обновление MODX • Установка и обновление пакетов • Создание резервных копий через backup/restore или через git 20
  • 23. Планы по развитию • Доработать управление пакетами: установка локальных, добавить параметр --save, добавить сохранение в конфигурацию уже установленных пакетов • Доработать существующие функции и исправить баги • Добавить работу со схемами БД для более аккуратной работы с данными • Улучшить документацию 23
  • 24. Контакты • iklimchuk – Twitter • Alroniks – GitHub • klimchuk.com • ivan@klimchuk.com alroniks 24
  • 25. 25