В этом релизе мы полностью поддержали PHP 8.1, улучшили обработку дженериков, реализовали drag-and-drop для перемещения классов и пространств имен, обновили HTTP-клиент, повысили удобство процесса развертывания и управления версиями, а также добавили новые возможности удаленной разработки.
Под катом подробный разбор всех изменений и новых возможностей с кучей гифок.
Скачать PhpStorm можно на сайте или через приложение Toolbox App.
Как и раньше, студентам, преподавателям и тем, кто занимается опенсорс-проектами, JetBrains предоставляет бесплатные лицензии. Стартапам доступна скидка 50%.
Итак, вот что мы подготовили для вас в этом обновлении:
Полная поддержка PHP 8.1
- Перечисления
- Readonly-свойства
- Пересечения типов
- Новое (не)возвращаемое значение: `never`
- Финальные константы
- Оператор `new` в инициализаторах
- Синтаксис First-class callable
-
Устаревшие возможности
Дженерики в PHP
- Улучшенная поддержка Doctrine Collections
- Поддержка коллекций Laravel 9
- Вывод дженерик-типа из конструктора
- Поддержка аннотаций phpstan-*
Улучшения рефакторингов
Удаленная разработка
Более быстрый и улучшенный деплоймент
- Поддержка `rsync`
- Повторная попытка для неудачных загрузок
- Ускорение для SFTP/FTP/FTPS благодаря многопоточным соединениям
- Новое действие: Загрузить все открытые файлы
- Быстрое переключение сервера по умолчанию для проекта
-
Поддержка proxу для SSH соединений
HTTP клиент
- Поддержка текстовых и JSON стримов
- Бинарные ответы
- Перенаправление вывода в файл или каталог
- Поддержка идентификаторов HTTP-запросов
VCS
- Выравнивание изменений при просмотре диффа
- Checkout and Rebase onto Current для удаленных веток
- Реорганизованные настройки VCS
-
Новое действие ‘Push All up to Here’
Обновления UX
PHP 8.1
PHP 8.1 уже вышел! Подробнее об обновлениях языка можно узнать из видеоролика, который мы подготовили совместно с Brent Roose и авторами разных RFC: Larry Garfield, Matheu Napoli, Aaron Pietrowski, Дмитрий Стогов, Никита Попов.
PhpStorm 2021.3 полностью поддерживает изменения, введенные PHP 8.1. Подробнее об этом рассказываем ниже.
Как обычно, чтобы попробовать новые возможности, необходимо установить PHP 8.1 в качестве PHP language level. Настройка доступна в панели инструментов. Либо вы можете прописать соответствующее требование в
composer.json
.Перечисления
Вместо набора констант теперь можно использовать перечисления (enum). Они обеспечат проверку типов из коробки.
Поддержка перечислений появилась в PhpStorm еще в релизе 2021.2. Подробнее об этом читайте в предыдущем хабрапосте.
Readonly-свойства
Свойства с флагом readonly — это свойства, которые нельзя изменить после инициализации (то есть после присвоения им значения).
В предыдущих версиях PHP можно было добиться похожего поведения с помощью приватных сеттеров. Однако ключевое слово
readonly
позволяет сделать класс более читаемым, а ограничение — более строгим.Свойство
readonly
может быть инициализировано только в той же области видимости, в которой оно объявлено, то есть в самом объявлении либо в методе класса.Свойства с флагом
readonly
должны быть типизированы, но если вы не знаете тип заранее, можно использовать mixed
.Если вы проинициализировали свойство
readonly
объектом, то этот объект (его внутреннее состояние) останется изменяемым.У свойства
readonly
не может быть значения по умолчанию. Однако такое свойство можно инициализировать в конструкторе: нажмите Alt+Enter, чтобы применить соответствующее быстрое исправление:Пересечения типов
В PHP 8.0 были добавлены объединения типов (union). А теперь в PHP 8.1 появились пересечения (intersection).
Синтаксис типов intersection такой:
TypeA&TypeB
. То есть значение должно одновременно являться instanceof TypeA
и instanceof TypeB
.В PhpStorm 2021.3 автодополнение типов union и intersection устроено одинаково, ведь их различие только в том, что union может содержать члены всех указанных типов, а intersection должен содержать члены этих типов.
Комбинации с типами union PHP пока не поддерживает. Поэтому такое выражение будет считаться ошибкой:
В более старых версиях PHP можно было встретить пересечения типов в аннотациях PHPDoc. Они тоже поддерживаются в PhpStorm 2021.3. Когда вы решите перейти на PHP 8.1, то сможете легко трансформировать аннотации PHPDoc в нативные определения с помощью Alt+Enter:
Новый тип never
В PHP 8.1 появился новый тип для (не)возвращаемых значений —
never
.Tип
never
означает, что функция (или метод) не возвращает ничего и либо генерирует исключение, либо завершает выполнение вызовом die()
, exit()
, trigger_error()
и т. п.Тип
never
улучшает анализ кода. Он делает практически то же самое, что и атрибут PhpStorm #[NoReturn]
, — отличие в том, что теперь это полноценная часть языка!Финальные константы
PHP 8.1 позволяет объявлять константы класса как финальные, после чего их нельзя переопределить в дочерних классах.
В PHP 8.0 и более ранних версиях языка константы в интерфейсах были неявно финальными, и их нельзя было изменить. В PHP 8.1 эту неконсистентность убрали: теперь константы по умолчанию — не финальные.
Оператор new
в инициализаторах
В PHP 8.1 для параметров, статических переменных, глобальных констант и аргументов атрибутов можно указывать значения по умолчанию.
У этого есть приятный побочный эффект — появляется возможность использовать вложенные атрибуты.
PhpStorm проверяет, где именно вы используете оператор
new
. Например, использовать его со свойствами или константами класса нельзя, так как при этом возникают проблемы с порядком инициализации:Синтаксис First-class callable
В PHP 8.1 появилась возможность получить ссылку на любую функцию.
Раньше это нужно было делать вот так:
$fn = Closure::fromCallable('strlen');
Теперь все гораздо проще:
$fn = strlen(...);
Новый синтаксис соблюдает область видимости в точке создания вызываемого объекта, а также поддается статическому анализу и выглядит более лаконично.
Вызовы
fromCallable
можно преобразовать к новому синтаксису. Для этого нажмите Alt+Enter и выберите нужное быстрое исправление:Устаревшие возможности
PHP порой удивлял своим причудливым поведением. Но с каждой новой версией языка проблем в нем становится все меньше. И PHP 8.1 не исключение: многие проблемные места объявлены устаревшими.
Чтобы перевести проект на PHP 8.1, прежде всего нужно поправить совместимость и свериться со списком устаревших возможностей.
PhpStorm поможет найти устаревший код и обновить его.
Вот пара примеров устаревших возможностей.
Использование интерфейса Serializable
Вместо интерфейса
Serializable
рекомендуется использовать магические методы __serialize()
и __unserialize()
, появившиеся в PHP 7.4.В PHP 8.1 разрешает использовать
Serializable
, но только в тех случаях, когда реализующий его класс содержит __serialize()
и __unserialize()
.PhpStorm выделит неправильный код и предложит добавить магические методы в класс при помощи быстрого исправления:
Использование $GLOBALS
Некоторые варианты использование суперглобальной переменной
$GLOBALS
требовали специальный обработки в интерпретаторе, что влияло на производительность всех массивов. Поэтому были ограничены попытки изменить саму переменную, а вот чтение и запись в нее остались как раньше.Подробнее об устаревших возможностях PHP можно узнать в руководстве по обновлению.
Улучшения для дженериков
В PhpStorm 2021.2 появилась долгожданная базовая поддержка дженериков. Мы продолжаем ее совершенствовать. Спасибо за ваши отзывы и тикеты в трекере!
Вот что нам удалось сделать в этом релизе:
Улучшение поддержки Doctrine Collections
Аннотация
@template
теперь поддерживает интерфейс IteratorAggregate
. Таким образом, итерация по коллекциями Doctrine теперь работает из коробки!Поддержка коллекций Laravel 9
В ближайшем выпуске Laravel, пакет illuminate/collections будет покрыт аннотациями дженериков. В PhpStorm 2021.3 для них автоматически заработает автодополнение кода.
Вывод дженерик-типов из конструктора
Допустим, в конструкторе есть дженерик-параметр
@template
, и вы хотите уточнить тип, передав объект в качестве аргумента. Это не сработало бы в предыдущих версиях. В версии 2021.3 это работает правильно. Также вы сможете воспользоваться автодополнением.Поддержка аннотаций phpstan-*
PhpStorm 2021.3 поддерживает любые аннотации для дженериков. Можно использовать префикс
@psalm-*
или @phpstan-*
, а также чистые теги без префиксов, например @template
.Улучшенные рефакторинги
Перемещение классов и неймспейсов с помощью drag-and-drop ????
Раньше, если вы перемещали файл или папку в дереве файлов проекта, то неймспейсы в классах при этом не изменялись, и приходилось править файлы вручную.
Теперь вы можете перемещать файлы и даже целые папки, используя drag-and-drop. PhpStorm сам обновит неймспейсы в классах и во всех их использованиях!
Рефакторинг Move Class / Move Namespace поможет вам легко реструктурировать проект. Ну а если что-то пойдет не так, то всегда можно отменить рефакторинг, нажав Ctrl-Z.
Чтобы этот рефакторинг работал, необходимо правильно настроить PSR-0 / PSR-4.
Мы переработали рефакторинги Inline method, Inline variable, Extract variable и Extract method. Они стали работать более надежно и предсказуемо. Попробуйте их!
Inline function or method
Когда тело метода более очевидно, чем его название, имеет смысл заменить вызовы метода его содержимым, а сам метод удалить.
Чтобы использовать этот рефакторинг, поместите каретку на вызов метода и нажмите Ctrl+Alt+N (⌥⌘N на macOS).
То же самое с приватными методами, используемыми всего один раз. Вы можете встраивать их при помощи нового быстрого исправления Inline method, доступного также по Alt+Enter:
Inline variable
Порой лишние переменные только загромождают код.
Вы можете заменить ссылку на переменную самим выражением, поместив каретку на переменную и нажав Ctrl+Alt+N (⌘⌥N на macOS).
Если переменная используется только один раз, ее можно заменить при помощи быстрого исправления (Alt+Enter):
Если вы не помните название рефакторинга или сочетание клавиш для его вызова, просто нажмите Ctrl+T (⌃T) и найдите нужный рефакторинг в списке.
Удаленная разработка
PhpStorm 2021.3 поставляется с возможностями удаленной разработки. Они позволят вам писать, запускать и отлаживать код с любой машины.
Теперь вы можете подключаться к удаленному серверу, на котором запущен бэкенд PhpStorm. Вся обработка данных выполняется на мощной удаленной машине. При этом вы можете работать над проектом привычным образом — как будто он размещен локально.
Функция удаленной разработки доступна на начальном экране PhpStorm, а также в новом приложении JetBrains Gateway (чтобы установить его, воспользуйтесь Toolbox App).
Пока что возможности удаленной разработки доступны в бета-версии. Мы продолжаем активно дорабатывать их.
Улучшенные возможности развертывания
PhpStorm позволяет загружать файлы на удаленную машину. В версии 2021.3 мы ускорили этот процесс и добавили несколько долгожданных возможностей.
Все настройки развертывания доступны в Settings/Preferences | Build, Execution, Deployment | Deployment.
Поддержка rsync
При использовании SFTP-сервера для развертывания в разделе Advanced, появится новая опция
rsync
.Использование
rsync
позволяет значительно ускорить развертывание!Вот результаты бенчмарка загрузки Drupal 8 (12 757 файлов, 120 МБ, SFTP на локальном Docker):
rsync выключен: 6.26 минут
rsync включен: 38.192 секунд — в 9 раз быстрее!
Чтобы включить rsync, перейдите в настройки SFTP-сервера и поставьте флажкок `Use rsync for download/upload`:
Путь к исполняемому файлу
rsync
настраивается в разделе Settings/Preferences | Tools | Rsync:Для macOS и Linux он должен быть доступен сразу же. Для Windows мы рекомендуем использовать Cygwin и OpenSSH.
Повторная загрузка файлов
Загрузка файлов на сервер может зафейлиться по разным причинам. В таком случае вы сможете легко повторить загрузку.
Если загрузка сорвется, вы увидите ссылку Retry в окне File Transfer.
Ускорение для SFTP/FTP/FTPS благодаря многопоточным соединениям
Мы подготовили долгожданную реализацию многопоточного развертывания. Поддерживаются операции upload, download и drag-and-drop. Синхронизация и автоматическая загрузка пока не поддерживаются.
Новая опция Number of connections находится в секции Advanced в конфигурации SFTP/FTP/FTPS сервера. Число подключений по умолчанию — 5:
Новое действие Upload all opened files
Если у вас открыто несколько файлов в разных вкладках, то теперь можно загрузить их все одной командой, Upload All Open Files to…. Она доступна в разделе Tools | Deployment, через поиск по командам (Cmd/Ctrl+Shift+A), или из контекстного меню любого файла.
Выбор сервера по умолчанию для проекта
В строке состояния доступен новый виджет, который показывает текущий сервер по умолчанию. Здесь же вы можете выбрать другой сервер.
Поддержка прокси для SSH-соединений
Теперь можно указать прокси-сервер HTTP или SOCKS для SSH-конфигураций в Preferences / Settings | Tools | SSH Configurations.
Также можно синхронизировать настройки SSH-прокси с глобальными настройками IDE. Для этого установите флажок Use global IDE proxy settings.
Улучшения HTTP-клиента
Поддержка текстовых и JSON стримов
Теперь стало проще тестировать потоковые приложения, потому что версия PhpStorm поддерживает следующие типы контента: text/event-stream, application/stream+json и application/x-ndjson. Это означает, что HTTP-клиент больше не будет ждать окончания стрима, а будет отображать сразу вывод на лету.
Бинарные ответы в HTTP-клиенте
Теперь, если HTTP-клиент получает в качестве ответа изображение, он отображает картинку в консоли ответа.
Перенаправление вывода в файл или каталог
HTTP-клиент теперь может перенаправлять вывод в файл или каталог с помощью соответствующих операторов:
-
>>
(всегда создает новый файл), -
>>!
(переписывает файл, только если он уже существует).
Поддержка идентификаторов HTTP-запросов
PhpStorm 2021.3 теперь понимает идентификаторы (или имена) для запросов — как объявленные в виде комментария (с
@name
), так и объявленные в виде текста в первом разделителе (###
).Вы сможете вызывать запрос по идентификатору из окна Services, а также из диалоговых окон Run Configuration, Run Anything или Search Everywhere.
VCS
Выравнивание изменений при просмотре Diff
Мы добавили новую опцию Align Changes Highlighting в окне Diff под шестеренкой.
Эта опция выравнивает строки, в которых нет изменений, так, чтобы они отображались рядом друг с другом. Так вы будете лучше видеть код, который был добавлен или удален.
Checkout and Rebase onto Current для удаленных веток
Действие Checkout and Rebase onto Current позволяет сделать чекаут выбранной ветки и перебазировать ее поверх текущей ветки. Раньше это работало только для локальных веток, а теперь возможно и для удаленных.
Реорганизация настроек VCS
Настройки системы контроля версий доступны в Preferences/Settings | Version Control. Мы по-новому структурировали их — теперь вам будет легче находить нужные действия.
Новое действие Push All up to Here
Если вы хотите сделать push части коммитов, а другую часть пока оставить в работе, можете использовать новое действие Push All Up to Here.
Просто перейдите на вкладку Log окна Git, выберите нужный коммит и, щелкнув по нему правой кнопкой мыши, выберите действие Push All up to Here.
UX
Новое окно Bookmarks
Мы объединили сущности Favorites и Bookmarks в одну и создали отдельное окно Bookmarks.
Вы можете добавить закладку для определенной строки, файла или папки, нажав F3 на macOS или F11 на Windows/Linux. Все созданные закладки будут доступны в окне Bookmarks.
Просмотр кода в Show Usages
Диалоговое окно Show Usages, доступное по Ctrl+Click (⌘+Click) теперь показывает превью исходного кода для найденного использования.
Чтобы включить предпросмотр, нажмите кнопку на панели инструментов.
Улучшения для Markdown
Одной из самых муторных проблем при редактировании markdown всегда было добавление и редактирование таблиц. В PhpStorm 2021.3 эта проблема решена.
Теперь достаточно открыть контекстное меню (в любой точке markdown-файла) и выбрать Insert | Table. И это все! Размер исходной таблицы можно выбрать мышкой.
Для создания новой строки таблицы можно использовать Shift+Enter, а для перехода к следующей ячейке — Tab.
Инструменты для работы с БД
PhpStorm включает встроенную функциональность DataGrip. Подробнее обо новых возможностях DataGrip читайте в обзоре релиза DataGrip 2021.3 от наших коллег.
Веб-разработка
И как всегда, в PhpStorm вошли все обновления из WebStorm 2021.3.
А вот видеоролик (на английском), представляющий главные фичи нового релиза:
На этом пока все. Будем рады вашей обратной связи — вопросам, пожеланиям, баг-репортам и просто мыслям. Оставляйте их в комментариях ниже.
Комментарии (37)
Maksclub
09.12.2021 19:23+7Раньше, если вы перемещали файл или папку в дереве файлов проекта, то неймспейсы в классах при этом не изменялись, и приходилось править файлы вручную.
почему-то думал, что это всегда работало, а у меня руки кривые :)
огонь!
vsh797
09.12.2021 19:51На win 10 в 2021.2.3 ctrl+tab открывает предыдущий файл. В 2021.3 что-то не работает..
mynque
10.12.2021 14:32И в 2021.2, и в 2021.3
Ctrl+Tab
замаплен на действие Switcher, которое и должно переключать на предыдущий файл. А вSettings | Keymap | Find Actions by Shortcut
у вас шорткат определяется, действие находится?
tronin
10.12.2021 14:33Что там, что там ctrl+tab открывает Switcher по умолчанию, в котором доступны предыдущие файлы. Проверьте что в Keymap для switcher стоит Ctrl+Tab.
Также, предыдущие файлы можно открывать через Ctrl+E.
vsh797
10.12.2021 15:07По ctrl+tab нашлось действие Other | Switcher (RecentFiles) Actions | Switcher. Я работаю со скринридером. Если на switcher поставить ctrl+1, то все отрабатывает так же, как и в 2021.2, а ctrl+tab, хоть тоже назначен, ни к чему не приводит.
Lopar
09.12.2021 21:32Вечно порываюсь спросить и забываю: а phpstorm всключает в себя весь datagrip полностью, или какие-то его части? А то я до того как разобрался начал платить и за то и за другое, а теперь почти полгода думаю, стоит ли покупка datagrip свеч, если есть phpstorm?
php7
09.12.2021 21:53Сохраняются ли удаленные ветки в которые пушил с локальной? А то там постоянно master (или другая ветка, с которой делал checkout)? В 2016 сохраняло.
Также в 2021.2 checkout new branch не сохраняет ветку, с которой потом подтягивать изменения через <Ctrl> + <T>. Починили?
Очень неудобно.
BoShurik
09.12.2021 23:502.Тоже жду эту фичу. Проголосовать можно тут: https://youtrack.jetbrains.com/issue/IDEA-228145
mynque
10.12.2021 14:54Это сложная история, кажется что наша VCS команда считает что так правильнее.
Вот тред на эту тему, там есть некоторые воркэраунды: https://youtrack.jetbrains.com/issue/IDEA-98693
Плюс, в related issues есть некоторые, э, related issues, которые тоже могут быть интересны.
php7
10.12.2021 17:34Оттуда:
Any branch you push to will be remembered and you accidentally could bush to a wrong branch next time, if e.g. you need to push a branch somewhere only once and then push to the upstream/tracked branch again. The better approach is to set defaults. It is tracked branch by default, but if it does not work - configure git accordingly.
А так есть опасность напушить в мастер. Пушить в другую ветку те самые коммиты не приходилось. Вдруг что, делалась отдельная локальная ветка.
Сделали бы настройку.
interprise
09.12.2021 22:48+1Не думали сделать семейную подписку на 1-2 человека?
slaFFik
09.12.2021 23:09+2Семейная подписка (которая обычно дороже) на 1 человека? Выглядит отличным бизнес решением для JB :)
QeqReh
10.12.2021 07:20+4Уж лучше подписку на два продукта со скидкой... У меня несколько знакомых пользуются двумя IDE и вынуждены за них платить по отдельности.
tommyangelo27
11.12.2021 04:10Можно и на три, с ещё большей скидкой ???? (пользуюсь Штормом, Goland и Rider)
Marchao
10.12.2021 00:08Люблю продукты JetBrains, но с каждым релизом добавляется мелкий глюк(на разных устройствах с win10). В прошлых релизах не давал ввести больше одного символа в шаблон ветки для ветки гита в Tasks, в этом серьёзнее беда, поиск по удалённому серверу тоже ограничивается одной буквой и перепрыгивать через некоторые правильные значения (в /etc искал php и при навигации стрелочкой перепрыгивал через нужную папку php.d)
Я один такой счастливчик или ещё у кого-то подобные приколы бывают.
Автору спасибо за статью!
JetBrains спасибо за продукты, которые позволяют получать от разработки удовольствие.
vsh797
10.12.2021 08:53Еще б какой-нибудь способ простого запуска шторма в режиме удаленной разработки из под WSL2..
mynque
10.12.2021 14:28Мы движемся в этом направлении вместе с Gateway.
Вообще, если ваш WSL дистро доступен по SSH, вы можете использовать Гейтвей для запуска там любой нашей IDE.vsh797
10.12.2021 15:15Да, можно попробовать прокинуть ssh, поставить ide и Gateway на обоих концах и связать. Вы в будущем планируете делать этот процесс удобнее, как в VSCode, например?
NeLexa
10.12.2021 09:02Форматирование таблиц в Markdown работает отлично, но лишь до того момента, пока в таблице не нужно указать символ |. При его вводе, редактор сразу отделяет его от экранирования обратной чертой.
| Symfony version | PHP versions | ------------------|-----------------| | ^5.1 | ^7.4\|^8.0\|^8.1|
vsh797
10.12.2021 11:43Дженерики на имплементируемых интерфейсах вроде как все еще не работают… Планируете добавить поддержку?
mynque
10.12.2021 14:51Вроде бы сделали же: https://youtrack.jetbrains.com/issue/WI-61497
Или вы о другом кейсе?vsh797
10.12.2021 15:23Об этом. Но в методе rand из вашего примера на $min автокомплита нет.
mynque
10.12.2021 15:47+1А. До 2021.3 вы бы и после вызова rand() не получили комплишена от DateTime, а теперь он там есть.
Типы параметров пока что не прокидываются, увы: https://youtrack.jetbrains.com/issue/WI-56034
По срокам ничего сказать не могу, но судя по количеству воутов, должны сделать.
abyrvalg
10.12.2021 12:59Может, кто подскажет, куда исчезла опция 'replace with import'? (Примерно как-то так называлась). Сейчас во всех случаях предлагается только 'replace with alias', что в большинстве случаев бессмысленно.
mynque
10.12.2021 14:21+2Теперь это действие - квик-фикс для инспекции
Fully qualified name usage
, по-видимому, она у вас выключена. Если вы не хотите подсветку, можно изменить ее Severity наNo highlighting, only fix
.
DEamON_M
Люблю новые релизы от JB.
А как настроить ForwardAgent при открытии ssh сессии через phpStorm?
В issue написали, что сделано, но у меня так и не заработало. И хотя галочка «Parse config file ~/.ssh/config» в настройках ssh соединения стоит в ssh -T git@bitbucket.org всё равно выдаёт "Permission denied (publickey)." (при подключении не через phpStorm ForwardAgent работает)
lvo
Речь идёт про git или про SFTP? В git используется OpenSSH, а в SFTP свой SSH-клиент, и ForwardAgent был сделан как раз для SFTP, к тому же ещё два релиза назад. И здесь меня смущает git@bitbucket.org.
> Permission denied (publickey).
А это скорее всего говорит о том, что аутентификация не прошла, т.е. до этапа проброса агента на сервер дело даже не дошло. Вот такой вредный баг проскочил в релиз большинства IDE, но при этом в PhpStorm его не должно было быть, фикс приехал в релизную ветку до выпуска 2021.3. На всякий случай, проверьте, пожалуйста, не вернулся ли этот баг. Работает ли кнопка Test Connection в SSH Configurations? А в Deployment?
Dekmabot
С релизом ещё пропала поддержка ssh-ключей в формате putty, но конвертирование в одычный формат pem решает проблему
lvo
Это ужасно. Никто не собирался ломать ключи putty. Создайте, пожалуйста, задачку на youtrack в очереди IDEA, и приложите туда idea.log из меню Help | Show Logs in Explorer/Finder/Files. Заодно ещё поможет заголовок ключа putty — те несколько строчек, что идут до длинного base64 и описывают формат.
mynque
Уже все есть: https://youtrack.jetbrains.com/issue/IDEA-284623
DEamON_M
Я имел ввиду, когда подключается по ssh через Tools -> Start SSH Session и выбираешь подключение, то не работает ForwardAgent. Хотя в настройках ssh подключения галочка «Parse config file ~/.ssh/config» стоит, ну и соответственно в самом файле config ForwardAgent настроет. Если же использовать обычный bash-терминал, то при подключении ForwardAgent работает.
Это не критично, но не удобно каждый раз вводить логины/пароли и ip для коннекта по ssh к серваку, если они уже есть в IDE и там можно быстро подключиться. Просто иногда нужно что-нибудь из гита вытянуть на сервере, а ForwardAgent не работает.
lvo
Разобраться всё равно надо. Создайте, пожалуйста, задачку на youtrack в очереди IDEA. И к ней отладочные логи для ssh. Есть предположение, отчего это может быть, возможно закрою задачу как дубликат, но пока не ясно.
DEamON_M
Вышел на работу создал issue как мог)