# ya ide fix-jb-fsnotifier

{% note warning %}

Данный хендлер работает только на MacOS. 

{% endnote %}

### Что это такое?
Хэндлер, упрощающий подмену бинарника, нотифицирующего о событиях файловой системы в IDE на базе IntelliJ Platform. Комплектный бинарник явным образом исключает FUSE-разделы и списка доступных для получения, что приводит к дополнительной работе в IDE для обновления состояния файлов на файловой системе.
Более подробный рассказ есть в [посте](https://clubs.at.yandex-team.ru/arcadia/26326).

### Как этим воспользоваться?
1. Убедиться, что вы поставили нужные вам IDE через JetBrains Toolbox. К сожалению, в некоторых случаях установка пакетом или через SelfService приводит к неработоспособности ya ide fix-jb-fsnotifier.
2. Запустить `ya ide fix-jb-fsnotifier`.
3. Перезапустить открытые IDE.

### FAQ
- Q: Я хотел бы подменить бинарник только для конкретной IDE. Как это сделать?<br>
A: Вы можете запустить с указанием конкретной IDE. К примеру: `ya ide fix-jb-fsnotifier --clion`.
- Q: Почему бы не починить это на стороне JetBrains?<br>
A: К сожалению, отличить FUSE, что поддерживает события файловой системы от неподдерживающей не представляется возможным. При этом, есть вероятность совпадения имен или типов ФС и как следствие – глобальные проблемы с подхватыванием внешних изменений.
- Q: Почему это не встроено в `ya ide <ide_name>`?<br>
A: Встроим. Однако, не для всех JetBrains IDE используемых в Аркадии есть генератор проекта, поэтому нужда в отдельном хендлере все равно есть. Поэтому решено было начать с него.
- Q: Apple M1?<br>
A: Бинарник собран с поддержкой обеих архитектур, поэтому работать должен.
- Q: Windows?<br>
A: Насколько мне известно, такой проблемы там нет и ProjFS нормально рассказывает об изменениях в ней.
- Q: Linux?<br>
A: К сожалению, протокол FUSE для Linux не позволяет на данный момент пробросить нужную нам информацию до ядра и механизма событий файловой системы. Однако же, есть некоторые идеи, которые позволят обойти этот недостаток.
- Q: А как откатить обратно?<br>
A: Простой путь - переустановкой. Сложный но быстрый - восстановить файл из бекапа, он сохраняется рядом с пропатченным бинарем под именем `fsnotifier.original`.

### Ссылки
[Анонс ya ide fix-jb-fsnotifier](https://clubs.at.yandex-team.ru/arcadia/26326)
