Синхронизация изменений и автоматическая
загрузка на сервер развёртывания в PhpStorm

Последнее обновление: 19.10.2015 г.
Публикация: 04.10.2015 г.
Информация

Существует много способов передачи копий файлов проекта на сервер развёртывания. Это руководство описывает, как автоматически загружать изменения на сервер развёртывания с помощью PhpStorm, например, перед запуском сеанса отладки или при фиксации изменений в VCS. Оно опирается на руководство Деплой PHP-приложений с помощью PhpStorm.

1. Необходимые условия

Сервер развёртывания уже настроен, как указано в руководстве Деплой PHP-приложений с помощью PhpStorm.

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

2. Синхронизация изменений

Наряду с обычным копированием файлов с и на сервер развёртывания, PhpStorm также может синхронизировать изменения. Чтобы сделать это, используй опцию [Deployment → Sync with Deployed <server name>...] контекстного меню любого файла, папки или всего проекта на панели Project. Будет открыто окно Diff beetwen ... and ... (смотри скриншот ниже). Это так называемый diff — разница между файлами проекта PhpStorm и удалённым сервером.

PhpStorm: окно "Разница между ..."
Заметка

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

По умолчанию разница будет основываться на содержимом файлов. Также есть возможность выставить сравнение файлов в зависимости от размера или метки времени. Это можно сделать с помощью выпадающего списка на панели инструментов, указанного на скриншоте ниже.

PhpStorm: список типов сравнения файлов

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

PhpStorm: контекстное меню изменений выбранных файлов

После того как необходимые исправления для различий были сделаны, ты можешь использовать иконки на панели инструментов: Synchronize Selected (для cинхронизации выбранных файлов) или Synchronize All (для синхронизации всех файлов). Обсуждаемые иконки отмечены красным контуром на скриншоте ниже.

PhpStorm: Иконки для cинхронизации выбранных файлов

3. Автоматическая загрузка *

Внимание

Для настройки в проекте автоматической загрузки сервер развёртывания должен быть установлен в качестве сервера по умолчанию. Это можно сделать через меню [Tools → Deployment → Configuration]. Затем в левой части открывшегося окна выбери сервер и с помощью кнопки Use as Default на панели инструментов установи его по умолчанию.

Когда на сервере тебе нужны те же файлы, что и в проекте PhpStorm, полезно использовать автоматическую загрузку. Это значит, что всякий раз, когда изменение сохраняется в IDE, оно будет перенесено на сервер развёртывания. Конфигурирование поведения автозагрузки можно выполнить с помощью меню [Tools → Deployment → Options].

PhpStorm: окно "Опции"

Настройка опции (отмечена красным контуром на скриншоте выше) Upload changed files automatically to the default server (автоматическая загрузка изменённых файлов на сервер по умолчанию) происходит через выпадающий список со следующими значениями:

  • Newer (никогда) — автоматическая загрузка не используется.
  • Always (всегда) — автозагрузка файлов будет происходить при любом сохранении или автосохранении. Этот вариант не рекомендуется использовать для развёртывания на боевой сервер: при разработке может быть загружен неполный код, высока вероятность поломки приложения на сервере.
  • On explict save action (явное действие сохранения) — этот вариант будет вызывать автоматическую загрузку, только когда сохранение файла было вызвано вручную: при выборе через меню [File → Save As..] или с помощью горячих клавиш Ctrl + S (Cmd + S на Mac OS X).
Заметка

По умолчанию только файлы, изменённые в IDE, будут загружены. Если файлы будут изменены каким-либо другим способом: изменение VCS ветки, изменения Sass или LESS, а также изменения от плагина File Watcher, то они не будут автоматически загружены. Чтобы исправить это поведение и установить автозагрузку и для таких изменений, включи опцию Upload external changes (загрузка внешних изменений).

Всякий раз, когда происходит автоматическая загрузка, служебное окно File Transfer сообщает тебе об этом:

PhpStorm: служебное окно "File Transfer"

4. Автоматическая загрузка
перед запуском сеанса отладки *

При работе над PHP-приложением ты можешь загружать свой исходный код автоматически на сервер развёртывания каждый раз, когда запускаешь приложение или инициируешь сеанс отладки из IDE.

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

Используя меню [Run → Edit Configuration...], можно открыть окно конфигурации отладки и в секции Before launch (перед запуском) добавить действие Upload files to Remote Host (загрузка файлов на удалённый хост).

PhpStorm: окно "Конфигурации отладки"

Далее ты можешь указать, какие папки должны быть загружены на сервер развёртывания. Это может быть и полный проект, и лишь специфичные подпапки, необходимые для отладки.

PhpStorm: окно "Загрузка на удалённый хост"

5. Автоматическая загрузка после коммита в VCS *

PhpStorm может автоматически загружать файлы после коммита в VCS из окна Commit Changes (фиксация изменений). Для этого необходимо указать сервер в секции After Commit (после коммита), а при установке параметра Always use selected server (всегда использовать выбранный сервер) загрузка файлов на сервер развёртывания будет выполняться при каждой фиксации изменений.

PhpStorm: окно "Фиксация изменений"

6. Уведомления об удалённых изменениях *

При работе с локальным проектом и удалённым сервером есть возможность получать уведомления в случае удалённых изменений. Ты можешь это легко настроить через меню [Tools → Deployment → Options].

PhpStorm: список вариантов сравнения файлов

Существуют две опции, которые должны быть включены, чтобы ты смог получать уведомления об удалённых изменениях:

  • Warn when uploading over newer file (предупреждать о загрузке более нового файла) — эта опция позволяет выбрать тип поведения для предупреждений о перезаписи файлов на сервере развёртывания. По умолчанию эта опция отключена, но ты можешь выбрать с помощью списка вариант сравнения файлов: на основе метки времени и размера или фактического содержания файлов.
  • Notify about remote changes (сообщать об удалённых изменениях) — при включении этой опции ты будешь получать уведомления о всех удалённых изменениях файлов, даже которых нет в локальном проекте.

Если ты откроешь файл, который был изменён на сервере развёртывания, в IDE, то получишь уведомление об этом. Ты можешь объединить изменения в локальный файл или просто выбрать перезапись локальных изменений, загрузив удалённый файл.

PhpStorm: уведомление об удалённом изменении
Заметка

Если тебе нужна помощь по устранению неполадок при развёртывании приложений, ознакомься с руководством Устранение неполадок развёртывания в PhpStorm.

Пункт является опциональным при изучении руководства: Синхронизация изменений и автоматическая загрузка на сервер развёртывания в PhpStorm.

Контрольные вопросы
Источники и дополнительные материалы