Olivier Lefevre wrote:
> I recently did an initial check-in of a code base. There was some error
> about some file under one of the .svn directories that could not be
> written to (the machine was thrashing; probably a timeout of sorts,
> i.e., nothing serious) and when it was over I had a modified overlay on
> the root directory icon but, try as I might, I could not find any actual
> modification anywhere: only the root dir had a modified overlay.
> Repeated commits were no-ops, confirming there were no pending changes
> left. Later, after I accidentally killed the file explorer and restarted
> it, I was pleased to see that the modified overlay on the root was
> finally gone. What was that all about?
The status cache is what its name indicates: a cache of statuses.
Under very rare circumstances, the cache can miss a change. In that
case, you could see a wrong overlay because the cache thinks that the
item has another status than the one it actually has.
That goes away as soon as the cache detects another change and crawls
the folder again (refreshing the status).
Of course, in case your machine was thrashing, then the cache can't
crawl the folders as fast as you might like: it has to wait until the OS
allows it to access the folders again (some other process might have had
the files open or otherwise kept the harddrive busy).
Also, to avoid crawling the same folder again and again repeatedly, the
cache waits a few seconds after it receives a change notification. For
example, if you compile a big project, then the cache receives hundreds
of change notifications (one for every temp or *.obj, ... file the
compiler creates). The 'timeout' in the cache prevents it from crawling
the folders too often: it will wait until the disk isn't busy anymore
and *then* crawl again (there's no need to crawl the same folder in such
a case because most likely the status isn't changed anyway).
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest Interface to (Sub)Version Control
/_/ \_\ http://tortoisesvn.net
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Tue Jul 24 18:52:32 2007