On Fri, May 16, 2014 at 1:52 PM, Sampson, Jared
Since, as Nat (Echols) mentioned, Phenix does expand the paths, you’ll have to do the linking the other way around (i.e. the actual files are in /a/my_project, and the link is ~/Dropbox/a/my_project => /a/my_project). Then as long as the /a/my_project path is the same on all three computers, it should be fine—Dropbox follows symlinkshttp://www.dropboxwiki.com/tips-and-tricks/sync-other-folders I have several directories linked this way, with the original files outside the Dropbox folder on each computer, although, I admit I haven’t done it with Phenix.
There is another alternative here that has the advantage of being somewhat easier: what if I just added some hacks to support sharing of Dropbox folder specifically? If the directories have predictable names and locations, as appears to be the case, it is relatively straightforward to substitute $HOME/Dropbox where appropriate. FYI, the problem with expanding paths is more general than specific to my code, at least on Mac OS - it looks like symlinks are expanded to the absolute path whether I ask for this or not. So to fix this I would need to make all paths relative, which is considerably more difficult. As for guarding against having multiple instances modifying the files
simultaneously: I know I’m presented with a warning if I try to run multiple instances of Phenix on the same machine, but there doesn’t appear to be anything like that to prevent concurrent access to a project directory by multiple instances of Phenix on different machines. Assuming network connectivity for all machines and a fast-enough Dropbox sync (which may or may not be a reasonable assumption), it could be sufficient to place a simple lockfile in the .phenix directory of the project, perhaps with a username and date/time, and if another user (or the same user on a different machine) tries to open the project, Phenix would present an alert message with info about who locked the project and when, along with the option to abort or override the lock. Just thought I’d throw that idea into the ring, in case it might not be too difficult to implement.
Yeah, this isn't too difficult. Ideally though I would still like the project to be accessible in a read-only mode (which doesn't exist yet). -Nat