I’m a heavy user of Obsidian MD. I use the app across macOS, iOS and Windows, but instead of using the inbuilt sync service I store my vaults on a cloud drive. I use multiple vaults (Research, Daily Notes, General / Family, and then one for each major project) all subs in a shared root directory.
Why not the sync service? Because one of my reasons for choosing this product is decoupling from a specific platform and treating it as a file-system structure of markdown files that some editors lubricate the use of. Using the built-in facilities for sync is orthogonal to that goal.
Regardless, I manage history by storing a git repo of all the Vaults and pushing it to a remote repo, accomplished periodically via launchd on the Mac. But given that I store the git work tree on an external drive this causes just endless pain as the security system interjects itself and normal simple perms do not suffice. Macs really encourage you to use the undersized, overpriced internal drive, and make using external drives a nuisance. Add that eliciting the removable device perm request seems to be a roll of the dice, and other times it just auto-denies.
Running the zsh script from launchd fails because it doesn’t have the environment my user account does, and I refuse to just grant zsh universal perms for this one-off need.
Solution: Create a simple Automator app that just calls the script. Run the Automator app, e.g.
/usr/bin/open -W "/Users/.../UpdateObsidianGit.app" `
Grant it the removable device perms. Now schedule that app to run periodically via launchd. Problem solved. Automator is a pretty neat tool, and I had never touched it before but will leverage it heavily henceforth.
Oh and for the git remote I push encrypted files courtesy of git-crypt. Filenames and metadata is still visible, but contents are not if the remote were compromised. Originally used git-remote-gcrypt but having one or two mega files that have to be fully pushed on every tiny incremental change wasn’t quite what I was looking for.