Как заставить репозитории с символическими ссылками git уважать свой родительский проект в Projectile? - PullRequest
2 голосов
/ 13 апреля 2019

Я совершенно новичок в Spacemacs и Emacs в целом. Я переключился на spacemacs из vim в надежде на лучшую поддержку проекта для не-братских каталогов.

В настоящее время я работаю с папками внутри установки Source Dedicated Server , поэтому существуют тысячи файлов и папок, которые находятся вне моего контроля и которые мне безразличны. Читайте как: не надо, никогда не захочется и не нужно просматривать, искать или редактировать. Я могу смело делать вид, что эти файлы не существуют.

Для контекста, каталог установки моего экземпляра SRCDS: /mnt/c/dayz/

Единственные папки, которые я хочу видеть в Projectile (и neotree), следующие:

/mnt/c/dayz/garrysmod/gamemodes/dayz
/mnt/c/dayz/garrysmod/addons/dz_chernarus
/mnt/c/dayz/garrysmod/addons/fas2-sweps
/mnt/c/dayz/garrysmod/addons/gdbc
/mnt/c/dayz/garrysmod/addons/willbox
/mnt/c/dayz/garrysmod/addons/xmod

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

Я попытался создать папку внутри ~/projects/dayz с пустым файлом .projectile с символическими ссылками на те папки, которые я хочу (см. Вывод ls ниже). Тем не менее, кажется, что символические ссылки следуют к своему источнику, и снаряд / neotree автоматически переходят "в" эти проекты (редактирование /mnt/c/dayz/garrysmod/gamemodes/dayz/dayz.txt переместит меня в проект /mnt/c/dayz/garrysmod/gamemodes/dayz вместо того, чтобы держать меня в пределах ~/projects/dayz

~/projects/dayz/ > ls

.projectile
dayz -> /mnt/c/dayz/garrysmod/gamemodes/dayz
dz_chernarus -> /mnt/c/dayz/garrysmod/addons/dz_chernarus
fas2-sweps -> /mnt/c/dayz/garrysmod/addons/fas2-sweps
gdbc -> /mnt/c/dayz/garrysmod/addons/gdbc
willbox -> /mnt/c/dayz/garrysmod/addons/willbox
xmod -> /mnt/c/dayz/garrysmod/addons/xmod

Я также подумал о том, чтобы инвертировать мои символические ссылки, чтобы источники находились в моем каталоге ~/projects, что я на самом деле хотел бы сделать, но затем я в конечном итоге возвращаюсь к своей первой попытке решения, где он будет автоматически переключать проекты из-за расширение символической ссылки, а также нарушить функциональность поиска.

Кроме того, открывая проект ~/projects/dayz/, я не могу найти подкаталоги с символическими ссылками, используя SPC p f

Я создал следующий .projectile файл в /mnt/c/dayz/, содержащий

+garrysmod/gamemodes/dayz
+garrysmod/addons/xmod
+garrysmod/addons/gdbc
+garrysmod/addons/willbox
+garrysmod/addons/fas2-sweps
+garrysmod/addons/dz_chernarus
+garrysmod/data/dayz-data

-*.vvd
-*.vtx
-*.phy
-*.mdl
-*.vtf
-*.vmt
-*.png
-*.gma
-*.jpg
-*.exe
-*.dll

Это работает до определенной степени. Однако каталоги + 'd, кажется, имеют приоритет над расширениями - *' d, поэтому я все равно в конечном итоге вижу двоичные файлы при выполнении SPC p f и с огромным недостатком, что он должен искать тысячи файлов и сопоставлять их с правила (которые очень медленные) У меня есть другой проект, который также использует символические ссылки на некоторые из каталогов надстроек, описанных выше, так что это решение не слишком подходит.

В идеале, я хотел бы, чтобы моя первая попытка решения работала (или с обратными символическими ссылками, как уже упоминалось) без автоматического переключения Projectile на них, но я не знаю, с чего начать.

...