"move" file does a rename

Steps to reproduce

  • create a symbolic link in an obsidian vault that points to a directory on a different mount point / physical device
  • Right-click on a file in the file explorer and choose “Move”
  • Select as a destination the symlink

Expected result

The file will be moved

Actual result

The file is not moved and no error is displayed to the user.

Environment

  • Operating system: MacOS 11.1
  • Obsidian version: v0.11.0

Additional information

The same “move” operation succeeds is the symlink points to a directory on the same device as the vault.

Please also see: 0.11.0 - moving file shows toast notification "Successfully renamed"

I don’t necessarily consider that issue a “bug” because, well, Obsidian actually is renaming the file, not moving it.

However, I think it should be clear what’s happening and why a failure is occuring.

If the devs choose to implement “move” as “rename”, then (since a move cannot happen across mount points or devices), a failed move should pop up a toast indicating that the rename/move failed.

Personally (maybe because I like unix), I really like the existing semantics. It gives me a warm fuzzy feeling that an atomic rename operation has occurred.

we don’t support symlinks. There is a FR for that.

But symlinks work perfectly if on the same device!

My only suggestion is that if a rename operation fails for whatever reason (permissions, symlink, etc.) that an error be displayed.

I noticed the silent failures also extend to other filesystem operations. Create a vault, change the ownership on a directory, and try to create a file with cmd-N. Nothing happens- no file creation (understandably, since Obsidian can’t write to the directory), no error message, etc.

I also noticed that trying to save a file to which you don’t have permissions does produce a n ENOACCESS toast- it’s just that error messages aren’t uniformly displayed.

You should probably open a bug report for e.g. “failed move or create doesn’t display an error message” or some such instead.

I agree with @pjelby here.