From: Skip M. <sk...@po...> - 2002-01-18 22:39:02
|
Here's the result of an experiment with the dreaded "file changed" error. I have a quick question which will serve as the executive summary: * well well synchronized are the clocks on your local and remote machines? My setup is local machine: XEmacs 21.4.4, Mandrake 8.1, Perl 5.6.1 remote machine: Mandrake 8.1, Perl 5.6.1 There are 11 hops over the net beween the local and remote machines. My immediate link to the net is over a cable modem (fast downloads, uploads about 10x slower). Thinking this would be easy to track down, I initially just tried some "cvs up -D" runs, with makes to see how things stood. I was originally having all sorts of problems with versions dating from around 2002-01-02. I went off and did some other stuff for awhile, and tried again. This time I was having some trouble with even earlier versions (sometimes the 2001-12-31). Then I double-checked my NTP setup. Turns out I had deleted then reinstalled ntp several days ago. When I deleted it, rpm pushed /etc/ntp.conf out of the way (presumably to keep it from getting stomped on later on), so after I reinstalled it, even though I was running the ntp daemon, it was complaining (in /var/log/ messages) that it couldn't find /etc/ntp.conf. God only knows what it was syncing with... To make a long story short, I pushed /etc/ntp.conf back into place, sync'd the local and remote clocks (off by about 0.13 seconds), and restarted ntpd on the local machine. (The remote host is my ntp server.) Then I started playing again, but with a little more rigor. I added this macro definition to my ~/.xemacs/init.el file: (defalias 'ff (read-kbd-macro "C-x C-f /[manatee.mojam.com]tmp/trash RET SPC <backspace> C-x C-s SPC")) (define-key global-map [(shift f7)] 'ff) Then I went through the following progression: 1. Run "cvs up -D somedate" (or "cvs up -A" for the last trial). 2. Run "make EMACS=xemacs". 3. Start XEmacs & execute the above macro three times, deleting the file's buffer between each macro invocation. Exit XEmacs. 4. Repeat step 3. Here's what I came up with. In the table below, a dash means it was able to modify the file after saving it without the annoying prompt. An 'x' represents a failure. A vertical bar indicates stop/start of emacs. The dates are the value given to cvs up. 2001-12-25 ---|--- 2001-12-27 --x|--- 2001-12-31 ---|--- 2002-01-02 --x|--- 2002-01-04 ---|--- current CVS ---|--- Before I corrected my ntp problems, I was essentially unable to modify a file without getting the dreaded "file changed" message after saving it using anything later than the December 31st version. The fact that I still occasionally have trouble suggests to me that the modtime information is being compared with too fine a granularity. Looking at the perlfunc page for the stat and lstat functions it seems they should only be recording modtimes with a granularity of seconds though. I'm still mystified, though I am also in better shape tramp-wise than earlier today. I don't know if this will help you, Kai. The moral of the story for me is that I need to keep my clocks very well synchronized. -- Skip Montanaro (sk...@po... - http://www.mojam.com/) |