Jump to main content Jump to doc navigation

Заканчиваем подготовку к активной разработке.

Сегодня нужно выгрузить заготовку на сервер, переименовать её, создать репозиторий на GitHub и отправить в него первый коммит. Для этого настроим PhpStorm на работу с git.

Синхронизация с сервером

После того как мы связали локальный проект с удалённым сервером, в PhpStorm появились новые пункты контекстного меню:

  • Выгрузить файлы на сервер
  • Скачать файлы с сервера
  • Синхронизировать удалённые и локальные файлы

Важно понимать: первый и второй пункты могут перезаписать существующие файлы, поэтому используйте их осторожно. В основном лучше брать синхронизацию. Она покажет различия в файлах и позволит выбрать действия с ними. Есть и недостаток: при синхронизации нужно прочитать все удалённые файлы, а это занимает время. Хорошо, что PhpStorm умеет синхронизировать не только весь проект, но и отдельный каталог и даже один файл.

Мы выгружаем проект в первый раз. Перезаписывать там нечего, поэтому смело нажимайте Upload to MODXCloud. После этого можно проверить наличие файлов в админке.

Теперь нужно переименовать заготовку modExtra в Sendex. Для этого используем скрипт rename_it.php. На моём сервере ссылка такая:

http://c2263.paas2.ams.modxcloud.com/Sendex/rename_it.php

Если открыть её без параметров, скрипт просит указать новое имя:

You need to specify a new name of component in this file on line 9, or send it via $_GET["name"].

Меняем ссылку и передаём новое имя:

http://c2263.paas2.ams.modxcloud.com/Sendex/rename_it.php?name=Sendex

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

Мы даже можем собрать и установить его прямо сейчас, но тогда он создаст ненужные демо-таблицы в БД. Поэтому сделаем это после написания своей схемы и генерации модели.

В админке уже видны новые файлы, а в проекте всё по-старому. Значит, их нужно синхронизировать. Учитывая, что в локальном проекте мы ничего не меняли, можно нажать Download from MODXCloud. IDE предупредит, что может перезаписать файлы. Спасибо, мы в курсе.

Теперь удаляем старые ненужные файлы и каталоги:

  • /core/components/modextra/
  • /assets/components/modextra/
  • rename_it.php
  • rename_it.sh

Если вы заранее включили Automatic upload в настройках Deployment, все изменения синхронизируются сразу:

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

Ну вот, проект готов к первому коммиту на GitHub.

Работа с GitHub

Вообще этот пункт не обязателен. Никто не заставляет вести историю изменений файлов, принимать сообщения об ошибках и предложения правок кода.

Можно спокойно хранить всё на своём компьютере и не связываться с репозиториями. Но хороший программист держит проект в порядке, общается с пользователями и помнит, что и когда менял в коде. Молчу уже про то, что репозиторий в интернете отличная резервная копия.

Поэтому зарегистрируйтесь на GitHub и скачайте их приложение. С одной стороны приложение не обязательно. С другой оно установит консольный git, который нам очень нужен.

После установки вернитесь в PhpStorm и откройте настройки. В поиске введите git и посмотрите совпадения:

Введите и проверьте данные доступа к GitHub, затем укажите и проверьте путь к исполняемому файлу git (на Windows путь может отличаться, придётся поискать).

Если вы ещё не удалили каталог Sendex/.git, сделайте это сейчас. Нам нужен новый локальный репозиторий.

В меню нажмите VCS → Enable version control, выберите git и сохраните.

Все файлы стали коричневыми. Это значит, что они ещё не добавлены в репозиторий. Добавьте их через контекстное меню. Там появился новый пункт Git. Файлы станут зелёными.

Пора вкратце сказать, что такое система контроля версий. Грубо говоря, любая VCS это программа, которая хранит изменения ваших файлов с возможностью отката. Систем много, но сейчас самая популярная Git, которую придумал Linus Torvalds для разработки ядра Linux.

Главное отличие от конкурентов удобное создание веток и их слияние. То есть на каждое изменение можно создать новую ветку, похимичить там что-то, а потом влить изменения в основной проект, разрешив конфликты (если они будут).

Если вы никогда с этим не работали, войти в тему может быть сложно. Поэтому советую прочитать этот учебник. Там всё хорошо описано. Обратите внимание: там показывают работу с Git в командной строке, а я показываю то же самое только в PhpStorm.

Ещё раз напоминаю: это вовсе не обязательно для разработки дополнений в MODX. Это просто полезный навык, который может сильно облегчить жизнь.

Ещё одно отличие Git формат хранения. Он не лезет в ваши файлы и сохраняет всё нужное в одном каталоге .Git. Фактически Sendex/.git и есть репозиторий. Именно поэтому нам нужно было удалить старый каталог, который был репозиторием modExtra.

Сейчас мы создали новый чистый репозиторий Git, в котором ещё не сохранено ни одного изменения. Этот репозиторий локальный. Он ещё не привязан к GitHub, но уже полностью работоспособен. Можно копировать проект на флешку, носить туда-сюда, и история изменений останется с ним.

Чтобы исключить файлы или каталоги из системы контроля версий, используют файл .gitignore. Добавьте в корень репозитория: .idea Так мы отключаем слежение за служебным каталогом PhpStorm внутри проекта.

Удобно, правда? Тогда зачем GitHub? Затем, чтобы связать все ваши компьютеры, флешки и другие хранилища одного проекта. GitHub можно назвать центральным хранилищем кода. Сейчас там хостится огромное число проектов, которые разрабатывают разные люди, и всё это не превращается в хаос. Кстати, MODX разрабатывается там же.

Файл README.md в корне проекта служит кратким описанием. Я немного его изменил, и теперь можно сделать первый коммит, то есть зафиксировать код. Это как точка сохранения, к которой потом можно откатиться.

В PhpStorm это просто. Откройте вкладку Changes внизу IDE и выберите Commit changes в контекстном меню. Перед отправкой изменений в репозиторий IDE показывает все изменённые файлы (сейчас это весь проект) и просит ввести описание изменений.

В первом коммите изменений как бы нет, поэтому пишем «First commit». Дальше нажимаем commit и игнорируем предупреждения об ошибках в коде. Слишком умный этот PhpStorm! На вкладке Version control будет лог работы Git. Вдруг интересно?

Всё, изменения сохранены в локальном репозитории. С этого момента при каждом изменении файла проекта он становится синим. Это значит, что в него внесены изменения, которые ещё не сохранены в репозитории. Нужен коммит.

Осталось связать наш удалённый проект с GitHub и отправить туда изменения, чтобы их могли видеть все желающие. К сожалению, я не нашёл, как сделать это прямо в PhpStorm, поэтому придётся через командную строку.

В этом нет ничего страшного, потому что сначала всё равно нужно создать новый проект на Github. Он уже подскажет, какие команды вводить.

Как видите, чтобы отправить уже существующий репозиторий (а это наш случай), в командной строке нужно выполнить:

git remote add origin https://github.com/bezumkin/Sendex.git
git push -u origin master

Причём вторую команду можно запустить уже из PhpStorm. Обязательно отметьте ветку master, в которую нужно отправить наш коммит:

Ну вот наш проект и на GitHub! По идее, теперь можно делать себе forks (ответвления) и присылать мне свои коммиты, но на сегодня хватит.

Можно также добавить локальный репозиторий в клиент GitHub и оттуда уже запушить его на удалённый сервер.

Тоже хороший вариант.

Заключение

Сегодня мы выгрузили проект на сервер, переименовали, синхронизировали изменения и добавили систему контроля версий. Мы даже выложили репозиторий на GitHub, чтобы все желающие могли следить за прогрессом нашего курса =)

На следующем занятии продумываем логику работы компонента, пишем схему и генерируем модель БД.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more