ShadowFile

Last edit

Changed:

< It took me a long time to figure out that shadowfile doesn't deal with "localhost" very well when setting up a shadow via shadow-define-literal-group. You need to use your actual hostname, which can be rather tough to figure out on Windows and Mac OS X systems. On Windows it's usually the Netbios name/Computer name. On Mac OS X it's usually the name under System Preferences -> Sharing -> Computer name with all punctuation and spacing removed and .local append to the name. This is nowhere within shadow's documentation in the GNU Emacs info manual.
< I also haven't tested it out with Tramp yet
. All in all a nice feature but its documentation needs improvement. -- SamPeterson

to

> Probably the most annoying thing about how this package is written is that the hostname MUST match exactly the return value of the system-name function. This really needs to be documented in the info manual for the package as I just spent hours figuring out how to get this to work (had to run the source code though the debugger and everything).
> Basically I wanted to copy my .emacs file to
a location where I have a git repository. I have a Windows 7 machine using ntemacs. My computer name is Sam-PC.
> I had set my
shadow-literal-groups via this elisp:
> (setq
shadow-literal-groups
> '(("/Sam@Sam-PC:~/.emacs" "/Sam@Sam-PC:~/../../Documents/site/.emacs")))
> I could not for the life of me
figure out why it wouldn't work. I finally discovered it was because (system-name) returned "SAM-PC" not "Sam-PC".
> Case normalization should be used against the (system-
name) command, and localhost ought to be interpreted as an alias of (system-name) when matching the hostname.
> All in all a nice feature but its documentation needs improvement. -- SamPeterson


From the commentary: This package helps you to keep identical copies of files in more than one place – possibly on different machines. When you save a file, it checks whether it is on the list of files with “shadows”, and if so, it tries to copy it when you exit Emacs.

I use the following to copy my ~/NOTES file to a fileserver at the end of the day on a Windows machine. Since the fileshare is mounted as a separate drive, I have to provide my own machine name as the “host”.

    (require 'shadowfile)
    (setq shadow-literal-groups
          '(("/asc@BSIZUG04:h:/Alex Schröder/NOTES"
             "/asc@BSIZUG04:~/NOTES")))

To be honest, I also (prefer-coding-system 'utf-8), so that I’m using the control character \366 instead of the ö in the filename. ;) – AlexSchroeder

Probably the most annoying thing about how this package is written is that the hostname MUST match exactly the return value of the system-name function. This really needs to be documented in the info manual for the package as I just spent hours figuring out how to get this to work (had to run the source code though the debugger and everything).

Basically I wanted to copy my .emacs file to a location where I have a git repository. I have a Windows 7 machine using ntemacs. My computer name is Sam-PC.

I had set my shadow-literal-groups via this elisp:

    (setq shadow-literal-groups
      '(("/Sam@Sam-PC:~/.emacs" "/Sam@Sam-PC:~/../../Documents/site/.emacs")))

I could not for the life of me figure out why it wouldn’t work. I finally discovered it was because (system-name) returned “SAM-PC” not “Sam-PC”.

Case normalization should be used against the (system-name) command, and localhost ought to be interpreted as an alias of (system-name) when matching the hostname.

All in all a nice feature but its documentation needs improvement. – SamPeterson?

Why not file a bug? `M-x report-emacs-bug’ – DrewAdams


CategoryFiles