
Несомненно, что в современной IT-разработке необходимо использовать систему контроля версий, развёрнутую на внешних серверах. Однако, по тем или иным причинам (одиночный фриланс, дополнительное резервирование и т.п.) разработчики могут использовать также синхронизацию данных с облачным хранилищем.
Яндекс предлагает широкий перечень возможностей для синхронизации данных со своим облачным хранилищем и между различными устройствами. Однако, на момент написания статьи, программа Яндекс.Диск v3.2.19 не позволяет добавлять папки в игнор, чтобы не синхронизировать их с облаком.
Это приводит к тому, что программа Яндекс.Диск, помимо полезных исходников, постоянно пытается синхронизировать тысячи не нужных файлов в папках:
.vscode, .idea - временные файлы проектов IDE Visual Studio Code, PyCharm и т.д.;
node_modules - модули NodeJS;
venv - виртуальное окружение Python и т.д.
Также, во время одновременной работы над проектом и синхронизацией с облаком, может повреждаться виртуальное окружение Python и модули NodeJS, что исправляется только переустановкой всех зависимостей.
Одним из решений для пользователей Windows может быть использование программы Junction Link Magic.
Junction Link Magic – это простой инструмент, предназначенный для создания в Windows так называемых точек соединения, аналога символьных ссылок.
С помощью этой программы можно связать пустую папку и папку с данными, расположенную в другом месте или даже на другом диске. При этом Windows начинает отображать пустую папку-ссылку как обычную папку с данными.
Например, такие точки соединения могут использоваться, чтобы сберечь SSD и вынести на другой HDD диск все временные файлы, кеш, историю, куки, временные файлы программ и т.д.
Чтобы исключить папку из синхронизации Яндекс.Диска необходимо:
Рядом с папкой YandexDisk создать папку YandexIgnore
иконка YandexIgnore изменена для удобства В YandexIgnore для удобства поиска зеркально продублировать путь до проекта: YandexDisk\Work\Project -> YandexIgnore\Work\Project
Перенести из папки YandexDisk в YandexIgnore все папки не требующие синхронизации (виртуальное окружение Python, модули NodeJS и т.д.)
В YandexDisk на тех же местах создать пустые папки с аналогичным именем как у перенесённых папок
В программе Junction Link Magic создать необходимые точки соединения папок
Готово!
Программа Яндекс.Диск игнорирует такие точки соединения, поэтому после синхронизации в облаке останутся пустые папки, вместо большого количества ненужных файлов.
Если зайти в такую папку-ссылку, то будет казаться, что она содержит данные, хотя на самом деле все они лежат в YandexIgnore

При этом, это не нарушает работу IDE, Python или NodeJS, всё работает! Среда разработки PyCharm после этого стала подсвечивать такие папки другой иконкой


Такой вариант исключения папки из синхронизации Яндекс.Диска оказался рабочим и не сильно сложным.
Но тем не менее надеюсь, что команда Яндекс.Диска в ближайшем будущем добавит в меню пункт "Оставить только на компьютере" или "Не синхронизировать" и т.п.
