Почему sshfs вызывает эти артефакты Emacs? - PullRequest
2 голосов
/ 26 декабря 2009

После открытия файла в emacs (через туннелированную ssh, смонтированную файловую систему sshfs) я получаю символические ссылки, подобные этим:

.#jobid.php -> ddh@localhost.localdomain.31678:1260471633

Мы определили, что это файлы Emacs LOCK.

Файловая система sshfs монтируется с follow_symlinks и transform_symlinks, но, похоже, она отказывается возвращать ссылку text с помощью readlink, поэтому emacs не удаляет их.

Ответы [ 4 ]

2 голосов
/ 26 декабря 2009

Если вы ищете документацию, Emacs называет эти файлы блокировкой файла .

Вместо использования sshfs / FUSE вы можете обращаться к удаленным файлам напрямую из Emacs:

C-x C-f /ssh:host.name:/path/to/file RET

Emacs не создает блокировки файлов при редактировании удаленных файлов таким способом - найдите «TRAMP» для получения дополнительной информации о редактировании удаленных файлов. (К сожалению, я полагаю, что Emacs не может сказать, что ваша точка монтирования FUSE поддерживается удаленной файловой системой или что создание файловых блокировок на ней проблематично.)

1 голос
/ 15 марта 2012

Опция follow_symlinks заставляет символические ссылки на удаленной системе отображаться как реальные файлы. Это полезно, когда символическая ссылка ссылается на цель на удаленном хосте вне каталога, который смонтирован через sshfs, но это нарушает предположения Emacs, потому что, когда Emacs создает символическую ссылку, он ожидает, что тот же путь будет выглядеть как символическая ссылка позже.

Тем не менее, вы должны быть в состоянии заставить все символические ссылки на удаленном хосте работать правильно, по-прежнему отображаясь как символические ссылки, используя опцию transform_symlinks (а не follow_symlinks) и всегда монтируя корень удаленной системы (вместо просто ваш домашний каталог или что-то). Это должно позволить emacs использовать символические ссылки в качестве файлов блокировки, в то же время делая доступными удаленные цели символических ссылок.

1 голос
/ 26 декабря 2009

Эти символические ссылки используются emacs для предотвращения изменения одного и того же файла несколькими экземплярами emacs. Символьная ссылка обычно исчезает при сохранении файла, но похоже, что fuse-sshfs вмешивается в этот процесс, поскольку цель символической ссылки не является реальным файлом (это не должно но sshfs ожидает этого).

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

0 голосов
/ 28 января 2011

Эти символические ссылки создаются Emacs, когда буфер посещает файл, и они не позволяют двум экземплярам Emacs редактировать один и тот же файл (как упоминалось в других ответах). Emacs называет это «обнаружением коллизий».

К сожалению, единственный способ предотвратить такое поведение в GNU emacs - это во время компиляции. Исходные документы описывают, как это сделать, изменив заголовок.

Это потому, что функции lock-buffer и unlock-buffer являются примитивами и вызываются другими примитивами для создания этих символических ссылок. В более старых версиях Emacs их можно переопределять или деаляризировать в elisp, но примитив не заметит это изменение.

...